Создание сетевых политик

INFO

Платформа теперь предоставляет два разных интерфейса для работы с сетевыми политиками. Старый интерфейс поддерживается для совместимости, а новый более гибкий и включает встроенный редактор YAML. Рекомендуется использовать новую версию.

Пожалуйста, свяжитесь с администратором платформы, чтобы включить feature gate network-policy-next для доступа к новому интерфейсу.

NetworkPolicy — это ресурс Kubernetes с областью действия в пределах namespace, реализуемый плагинами CNI. С помощью сетевых политик можно контролировать сетевой трафик Pod-ов, обеспечивая сетевую изоляцию и снижая риск атак.

По умолчанию все Pod-ы могут свободно общаться, разрешая входящий и исходящий трафик из любых источников. При применении NetworkPolicy целевые Pod-ы будут принимать только трафик, соответствующий спецификации.

WARNING

Сетевые политики применяются только к трафику контейнеров. Они не влияют на Pod-ы, работающие в режиме hostNetwork.

Пример NetworkPolicy:

# example-network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example
  namespace: demo-1
  annotations:
    cpaas.io/display-name: test
spec:
  podSelector:
    matchLabels:
      pod-template-hash: 55c84b59bb
  ingress:
    - ports:
        - protocol: TCP
          port: 8989
      from:
        - podSelector:
            matchLabels:
              kubevirt.io/vm: test
  egress:
    - ports:
        - protocol: TCP
          port: 80
      to:
        - ipBlock:
            cidr: 192.168.66.221/23
            except: []
  policyTypes:
    - Ingress
    - Egress
  1. from и to поддерживают namespaceSelector, podSelector, ipBlock

Содержание

Создание NetworkPolicy через веб-консоль

  1. Войдите в Container Platform.

  2. В левой навигационной панели выберите Network > Network Policies.

  3. Нажмите Create Network Policy.

  4. Следуйте инструкциям ниже для заполнения соответствующих настроек.

ОбластьПараметрОписание
Целевой PodСелектор PodВведите метки целевых Pod-ов в формате ключ-значение; если не задано, политика применяется ко всем Pod-ам в текущем namespace.
Предварительный просмотр целевых Pod-ов, на которые влияет текущая политикаНажмите Preview, чтобы увидеть целевые Pod-ы, на которые распространяется эта сетевая политика.
IngressБлокировать весь входящий трафикБлокирует весь входящий трафик к целевому Pod-у.

Примечание:
  • Если в поле spec.policyTypes в YAML добавлен Ingress без настройки конкретных правил, при возврате к форме опция Блокировать весь входящий трафик будет автоматически выбрана.
  • Если поля spec.ingress, spec.egress и spec.policyTypes одновременно удалены в YAML, при возврате к форме опция Блокировать весь входящий трафик будет автоматически выбрана.
Правила

Описание: Если в правилах добавлено несколько источников, между ними действует логическая операция ИЛИ.
Pod-ы в текущем namespaceСоответствуют Pod-ам с указанными метками в текущем namespace; только такие Pod-ы могут обращаться к целевому Pod-у. Можно нажать Preview, чтобы увидеть Pod-ы, на которые влияет текущее правило. Если этот параметр не настроен, по умолчанию все Pod-ы в текущем namespace имеют доступ к целевому Pod-у.
Pod-ы в текущем кластереСоответствуют namespace или Pod-ам с указанными метками в кластере; только такие Pod-ы могут обращаться к целевому Pod-у. Можно нажать Preview, чтобы увидеть Pod-ы, на которые влияет текущее правило.
  • Если настроены и селектор namespace, и селектор Pod, будет взято пересечение — то есть выбраны Pod-ы с указанными метками из указанного namespace.
  • Если этот параметр не настроен, по умолчанию все Pod-ы из всех namespace в кластере имеют доступ к целевому Pod-у.
IP-диапазонВведите CIDR, который может обращаться к целевому Pod-у, и можно исключить CIDR-диапазоны, которым доступ запрещён. Если этот параметр не настроен, любой трафик может обращаться к целевому Pod-у.

Описание: Можно добавить исключения в формате example_ip/32 для исключения отдельного IP-адреса.
ПортСоответствует трафику на указанных протоколах и портах; можно добавить числовые порты или имена портов Pod-ов. Если этот параметр не настроен, будут соответствовать все порты.
EgressБлокировать весь исходящий трафикБлокирует весь исходящий трафик от целевого Pod-а.

Примечание:
  • Если в поле spec.policyTypes в YAML добавлен Egress без настройки конкретных правил, при возврате к форме опция Блокировать весь исходящий трафик будет автоматически выбрана.
Другие параметрыАналогично параметрам Ingress, здесь не будет подробно описано.
  1. Нажмите Create.

Создание NetworkPolicy с помощью CLI

kubectl apply -f example-network-policy.yaml

Справка

Для получения дополнительной информации ознакомьтесь с официальной документацией по Network Policies.