Справочная информация

Обзор

На этой странице — рекомендации по созданию и настройке сетевых политик Cilium.


Best practices для сетевых политик

1. Принцип наименьших привилегий

Разрешайте только необходимый трафик. Вместо «разрешить всё» — явно укажите разрешённые направления, порты и селекторы.

2. Начинайте с разрешающих правил

Сначала определите, какой трафик нужен приложению (DNS, KubeAPI, backend-сервисы), и добавьте разрешающие правила. Запрещающие правила добавляйте точечно.

3. Всегда разрешайте DNS

Если поды обращаются по имени (FQDN, Service), разрешите egress к Kubernetes DNS:

egress:
  - toEndpoints:
      - matchLabels:
          io.kubernetes.pod.namespace: kube-system
          k8s-app: kube-dns
    toPorts:
      - ports:
          - port: "53"
            protocol: UDP
          - port: "53"
            protocol: TCP

4. Разрешайте доступ к KubeAPI при необходимости

Поды, которым нужен доступ к API-серверу (операторы, контроллеры), должны иметь egress к kube-apiserver (toEntities).

5. Ingress и сетевые политики

При включённых политиках явно разрешите входящий трафик от Ingress-контроллера к backend-подам. Иначе запросы извне не дойдут до приложения.

6. Используйте селекторы подов

Ограничивайте политики селекторами (endpointSelector, fromEndpoints, toEndpoints), чтобы не затрагивать лишние поды.

7. Тестируйте в dev-неймспейсе

Перед применением в production проверьте политики в тестовом неймспейсе. Используйте kubectl run и curl для проверки связности.

8. Документируйте политики

Добавляйте description в CiliumNetworkPolicy, чтобы было понятно, зачем создано правило.

9. Избегайте конфликтов deny-all

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

10. Кластерные vs неймспейсные политики

ClusterwideCiliumNetworkPolicy применяется ко всему кластеру. Используйте для общих правил (например, доступ к DNS). Неймспейсные политики — для изоляции конкретных приложений.