Сетевая политика в Kubernetes для доступа через Ingress только
Я новичок в Kubernetes. У нас есть три пространства имен (dev, uat, prod).
Наши контейнеры имеют сервисы отдыха, которые мы хотим выставить во внешний мир с помощью Ingress (с аутентификацией клиента). Это работает нормально.
Но прямо сейчас мы можем вызвать нашу службу отдыха из других контейнеров в другом пространстве имен, просто используя имя службы K8s. Мы хотим заблокировать такой доступ.
Мы хотим разрешить доступ к модулям только через соответствующий вход k8s. Как мы можем достичь этого?
Я пытался создать две сетевые политики для достижения этой цели, но это не работает..
политика 1
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
namespace: ns1
spec:
podSelector: {}
ingress: []
политика 2
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-external
spec:
podSelector:
matchLabels:
tier: backend
ingress:
- from: []
После применения первой политики я не могу получить доступ к своей службе отдыха через Ingress. После того, как я применил вторую политику, сервис rest снова доступен из всех контейнеров, просто используя имя сервиса k8s без прохождения Ingress.
Есть ли способ, как этого добиться?
(Кроме того, добавление меток в пространства имен не вариант)