Kubernetes/Rancher: NetworkPolicy с Traefik

мы используем Rancher для настройки кластеров с Canal в качестве CNI. Мы решили использовать Traefik в качестве Ingress Controller и хотели создать NetworkPolicy. Мы отключили ProjectIsolation, и Traefik работает в проекте System в пространстве имен kube-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?

заранее спасибо


person mreiners    schedule 03.11.2020    source источник
comment
Можете ли вы попробовать добавить policyTypes Ingress в свой файл yaml, как описано в примере в документы?   -  person acid_fuji    schedule 04.11.2020
comment
@thomas Я только что добавил policyTypes, как вы упомянули, но это не сработало.   -  person mreiners    schedule 04.11.2020
comment
Вы включили плагин CNI? Он должен быть включен для обеспечения соблюдения сетевых политик. Подробнее здесь.   -  person acid_fuji    schedule 04.11.2020
comment
Да, он был включен по умолчанию, когда мы создавали кластер.   -  person mreiners    schedule 05.11.2020


Ответы (1)


Я решил проблему. Это была обычная ошибка новичка:

- namespaceSelector:
    matchLabels:
      namespace: kube-system

Я не добавил Label namespace: kube-system к Namespace kube-system.

После добавления метки все заработало мгновенно.

person mreiners    schedule 04.11.2020