1

问题:

我正在尝试使我的 API 能够进入我的外部托管数据库,同时要求将其他所有内容列入白名单。

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: server-allow-external
spec:
  podSelector:
    matchLabels:
      component: api
  ingress:
    - from:
        - namespaceSelector: {}
        - podSelector:
            matchLabels: frontend
        - ipBlock:
            cidr: 172.17.0.0/16

我在这里尝试了各种组合。网络插件策略,将外部数据库映射到基于集群的服务等,我没有运气。

注意:是的,我允许所有命名空间通信。

上面的代码是我在逻辑上解决问题的地方......但它仍然不起作用。如果这可能会产生影响,我还有一个位于此之外的负载均衡器?

代码:

我有一个依赖于后端 API 的前端(都在默认命名空间内)。然后是外部数据库。我实施了默认拒绝策略:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
  namespace: default
spec:
  podSelector: {}
  ingress: []

然后我允许从网络访问前端:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-external
spec:
  podSelector:
    matchLabels:
      component: frontend
  ingress:
    - from: []
4

1 回答 1

0

为外部服务器配置网络策略。您必须修复定义入口的部分。

只需将小节添加到 matchLabels - component: frontend

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: server-allow-external
spec:
  podSelector:
    matchLabels:
      component: api
  ingress:
    - from:
        - namespaceSelector: {}
        - podSelector:
            matchLabels:
              component: frontend
        - ipBlock:
            cidr: 172.17.0.0/16

我希望它有所帮助。

于 2019-06-26T06:18:44.057 回答