Как разрешить / запретить http-запросы из других пространств имен того же кластера?
В кластере с 2 пространствами имен (ns1
а также ns2
), Я развертываю то же самое приложение (deployment
) и выставить его на службу.
Я думал, что отдельные пространства имен будут препятствовать выполнению curl http://deployment.ns1
из стручка в ns2
, но, видимо, это возможно.
Итак, мой вопрос, как разрешить / запретить такие операции с перекрестными пространствами имен? Например:
- стручки в
ns1
должен принимать запросы из любого пространства имен - стручки (или услуги?) в
ns2
должен отклонять все запросы из других пространств имен
2 ответа
Хорошо, что вы работаете с изоляцией пространства имен.
Разверните новую сетевую политику в вашем ns1 с помощью ingress all. Вы можете просмотреть документацию, чтобы определить политику доступа к сети, чтобы разрешить весь входящий трафик
Аналогично для 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
,
- Стандартные политики
- Настройка сетевой политики по умолчанию для новых проектов в случае
OpenShift
,