Kubernetes / Rancher:使用Traefik的NetworkPolicy

问题描述

我们正在使用Rancher设置以Canal作为CNI的集群。我们决定将Traefik用作入口控制器,并希望创建一个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不了解吗?

预先感谢

解决方法

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

- namespaceSelector:
    matchLabels:
      namespace: kube-system

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

添加标签后,它立即生效。