Как изолировать пространства имен kubernetes, но разрешить доступ извне

У меня есть настройка кластера Kubernetes с использованием kubeadm
Я пытаюсь определить сетевую политику, которая ограничивает доступ извне пространства имен, но не блокирует доступ извне (внешний IP)
Чтобы уточнить, я хочу, чтобы модули были доступны из других модулей в пространстве имен и через внешний IP-адрес, но не из других пространств имен
есть идеи?

1 ответ

Решение

Я использовал следующую сетевую политику, и она работала для меня

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  namespace: policy-test
  name: deny-from-other-namespaces
spec:
  podSelector:
    matchLabels:
  ingress:
  - from:
    - podSelector: {}
    - namespaceSelector:
        matchLabels:
          access: "true"  

исходя из того, что я знаю, внешний доступ предоставляется через kube-proxy, который является модулем в пространстве имен kube-system. эта сетевая политика разрешит все модули из пространства имен test-policy и любого пространства имен с меткой access=true
применение этой сетевой политики и добавление метки access=true в пространство имен kube-system решит проблему

добавив ярлык:

kubectl label namespace/kube-system access=true
Другие вопросы по тегам