Как изолировать пространства имен 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