Kubernetes NetworkPolicy ограничивает исходящий трафик для обслуживания

Можно ли разрешить исходящий трафик только для конкретной службы? Это моя наивная попытка сделать это:

kind: NetworkPolicy
metadata:
  name: default-deny-all-egress
  namespace: default
spec:
  podSelector: {}
  egress:
  - ports:
    - protocol: TCP
      port: 53
    - protocol: UDP
      port: 53
    to:
      - podSelector:
          matchLabels:
            k8s-app: kube-dns
    
  policyTypes:
    - Egress

person Jonas    schedule 01.03.2021    source источник
comment
service на самом деле не является сущностью, а (с некоторыми CNI) правилами iptable, так что это более виртуально, поэтому NP всегда нацелен на модули   -  person Thomas Decaux    schedule 23.07.2021


Ответы (1)


Нет, насколько я знаю, это можно сделать только с помощью podSelector. Однако, если у вас есть доступ к кластеру, я думаю, вы все равно можете вручную добавить дополнительные метки для необходимых модулей и использовать podSelector

Создание исходящих политик – хороший шаблон NetworkPolicy структуры. . Следующая политика разрешает исходящий трафик модуля на другие модули в том же пространстве имен, которые соответствуют селектору модуля.

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-egress-same-namespace
  namespace: default
spec:
  podSelector:
    matchLabels:
      color: blue
  egress:
  - to:
    - podSelector:
        matchLabels:
          color: red
    ports:
    - port: 80

Я знаю, что вы можете использовать namespaceSelector для входа, как показано ниже. Не уверен, что вы можете использовать его с выходом - не пробовал. Но для доступа к подам из другого пространства имён нужно как-то указать это в конфигурации

  namespaceSelector:
    matchLabels:
      shape: square
person Vit    schedule 02.03.2021