【问题标题】:Kubernetes/Rancher: NetworkPolicy with TraefikKubernetes/Rancher:使用 Traefik 的 NetworkPolicy
【发布时间】:2020-11-03 15:22:40
【问题描述】:

我们正在使用 Rancher 以 Canal 作为 CNI 来设置集群。我们决定使用 Traefik 作为 Ingress Controller,并希望创建一个 NetworkPolicy。我们禁用了 ProjectIsolation,Traefik 正在 kube-system 命名空间的 System 项目中运行。

我创建了这个政策:

# deny all ingress traffic
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  ingress:
  - from:
    - podSelector: {}

---
# allow traefik
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-traefik
spec:
  podSelector: {}
  ingress:
    - from:
      - namespaceSelector:
          matchLabels:
            namespace: kube-system
        podSelector:
          matchLabels:
            app: traefik

---
# allow backnet
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-allow-backnet
spec:
  podSelector: {}
  ingress:
    - from:
      - ipBlock:
          cidr: 10.0.0.0/24
      - ipBlock:
          cidr: 10.1.0.0/24
      - ipBlock:
          cidr: 10.2.0.0/24
      - ipBlock:
          cidr: 192.168.0.0/24

但不知何故,我们无法让它工作。连接超时,仅此而已。这个政策有什么大问题吗?我对 NetworkPolicies 有什么不明白的地方?

提前致谢

【问题讨论】:

  • 您可以尝试将policyTypes Ingress 添加到您的yaml 文件中,如docs 中的示例所述吗?
  • @thomas 我刚刚添加了您提到的policyTypes,但它不起作用。
  • 您是否启用了 CNI 插件?必须启用它才能强制执行网络策略。更多信息here.
  • 是的,在我们创建集群时默认启用。

标签: kubernetes traefik rancher kubernetes-networkpolicy


【解决方案1】:

我解决了问题。这是一个简单的初学者错误:

- namespaceSelector:
    matchLabels:
      namespace: kube-system

我没有将Label namespace: kube-system 添加到Namespace kube-system

添加标签后立即生效。

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2021-08-04
    • 2023-01-27
    • 2019-11-03
    • 2021-06-21
    • 2017-01-29
    相关资源
    最近更新 更多