我是 Kubernetes 新手。我们有三个命名空间(dev、uat、prod)。
我们的容器有休息服务,我们希望通过 Ingress(使用客户端身份验证)向外部世界公开这些服务。这工作正常。
但是现在,我们可以通过使用 K8s 服务名称从其他命名空间上的其他容器调用我们的 rest 服务。我们希望阻止此类访问。
我们希望只允许通过它们各自的 k8s Ingress 访问 pod。我们怎样才能做到这一点?
我试图创建两个网络策略来实现这一点,但这不起作用..
政策一
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 访问我的休息服务。在我应用第二个策略之后,只需使用 k8s 服务名称,就可以再次从所有容器访问其余服务,而无需通过 Ingress。
有什么办法可以做到这一点?
(此外,不能为命名空间添加标签)