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

    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.