1

我是 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。

有什么办法可以做到这一点?

(此外,不能为命名空间添加标签)

4

0 回答 0