如何阻止来自 kubernetes 中特定命名空间的流量

How to block traffic from specific namespace in kubernetes

我的 k8 集群中有多个命名空间。我想要的只是开发命名空间中的 pods 可以与其他命名空间中的所有其他 pods 进行通信,但不能与生产命名空间中的资源进行通信。

我找不到该场景的文档。有这样的拒绝所有政策

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-egress
spec:
  podSelector: {}
  policyTypes:
  - Egress
  - Ingress

但它适用于同一命名空间中的 pod 级别。我怎样才能修改它以满足我的要求?

参考文档 here

  1. 将开发环境中的所有命名空间标记为environment=dev

  2. 将生产环境中的所有命名空间标记为environment=prod

那么你可以有如下的网络策略

  1. 您已有的默认拒绝政策
  2. 制定一项政策,将来自标签为 environment=prod
  3. 的命名空间流向 pods 的流量列入白名单

如下

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: access-nginx
spec:
  podSelector: {}
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          environment: "prod"