Как настроить сетевые политики (NetworkPolicy) в Kubernetes, чтобы запретить подам из одного namespace взаимодействовать с подами из другого namespace?

Для ограничения взаимодействия подов из одного namespace с подами из другого в Kubernetes можно использовать объект NetworkPolicy с указанием namespaceSelector.

Короткий ответ

Что ответить на собеседовании

Для ограничения взаимодействия подов из одного namespace с подами из другого в Kubernetes можно использовать объект NetworkPolicy с указанием namespaceSelector.

Подробный разбор

Ответ с пояснениями

Для ограничения взаимодействия подов из одного namespace с подами из другого в Kubernetes можно использовать объект NetworkPolicy с указанием namespaceSelector.

Пример NetworkPolicy, который разрешает входящий трафик только от подов внутри того же namespace и блокирует все остальные:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-cross-namespace
  namespace: target-namespace
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector: {}  # Разрешаем трафик только от подов внутри того же namespace

Если нужно явно запретить трафик из других namespace, можно не указывать разрешающие правила для них, так как по умолчанию все запрещено, если есть хотя бы одна NetworkPolicy, применённая к подам.

Для более сложных сценариев можно использовать namespaceSelector, например, чтобы разрешить трафик только из определённых namespace:

from:
- namespaceSelector:
    matchLabels:
      name: allowed-namespace
  podSelector: {}

Таким образом, чтобы полностью запретить взаимодействие между namespace, достаточно создать в каждом namespace NetworkPolicy, разрешающую трафик только внутри namespace.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку