Как разрешить / запретить http-запросы из других пространств имен того же кластера?

В кластере с 2 пространствами имен (ns1 а также ns2), Я развертываю то же самое приложение (deployment) и выставить его на службу.

Я думал, что отдельные пространства имен будут препятствовать выполнению curl http://deployment.ns1 из стручка в ns2, но, видимо, это возможно.

Итак, мой вопрос, как разрешить / запретить такие операции с перекрестными пространствами имен? Например:

  • стручки в ns1 должен принимать запросы из любого пространства имен
  • стручки (или услуги?) в ns2 должен отклонять все запросы из других пространств имен

2 ответа

Решение

Хорошо, что вы работаете с изоляцией пространства имен.

  1. Разверните новую сетевую политику в вашем ns1 с помощью ingress all. Вы можете просмотреть документацию, чтобы определить политику доступа к сети, чтобы разрешить весь входящий трафик

  2. Аналогично для ns2 вы можете создать новую сетевую политику и развернуть конфигурацию в ns2, чтобы запретить все входы. Снова придут на помощь доктора, чтобы помочь вам с конструкцией yaml.

Это может выглядеть примерно так:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
 namespace: ns1
 name: web-allow-all-namespaces
spec:
 podSelector:
  matchLabels:
   app: app_name_ns1
 ingress:
 - from:
  - namespaceSelector: {}

Это не будет ответ, который вы хотите, но я могу предоставить полезную информацию о функциях для реализации ваших требований.

насколько мне известно Kubernetes может определить network policy ограничить доступ к сети.

См. Объявление сетевой политики для более подробной информации Network Policy,

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