Сетевая политика в 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.

Есть ли способ, как этого добиться?

(Кроме того, добавление меток в пространства имен не вариант)

0 ответов

Другие вопросы по тегам