Было бы проще, если бы вы могли добавить фрагмент кода. Однако выяснить, что происходит не так сложно.
Я думаю, что-то подобное может быть проблемой с вашей сетевой политикой. Возможно, для ваших модулей требуется подключение к всемирной сети, поэтому вы не можете запретить передачу сообщений с теста на продвижение по правилу egress
, так как вы можете добавить 0.0.0.0/0
, чтобы позволить вашим модулям в любом окружении общаться с внешним миром для загрузки внешних библиотек или чего-либо еще материал, связанный с вашим приложением.
В связи с этим немного сложнее добавить правило egress
для остановки связи в любой среде. Но, наоборот, вы можете добавить правило igress
в prod ns, чтобы не допускать сообщения от test
или dev
. Нечто подобное может сработать, но, опять же, мы можем изменить его в зависимости от потребностей.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: prod-network-policy
namespace: prod
spec:
podSelector:
matchLabels:
ns: prod
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
ns: prod
ns: dev
ns: uat
- podSelector:
matchLabels:
ns: prod
ns: dev
ns: uat
- ipBlock:
cidr: 10.0.1.101/32 #Assuming allow incoming request from ingress controller
egress:
- to: []
Есть несколько способов добиться этого. Но я также иногда ссылаюсь на эти примеры рецептов на Github .
Редактирование на основе комментария Добавление других пространств имен к правилу входа, чтобы разрешить traffi c из других пространств имен, кроме test.
Надеюсь, это полезно.