外部服务的Kubernetes网络策略

时间:2019-06-15 06:48:07

标签: kubernetes kubernetes-networkpolicy

问题:

我正在尝试使我的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: []

然后,我允许从Web访问前端:

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

1 个答案:

答案 0 :(得分: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

希望对您有帮助。

相关问题