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

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.