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

如何在kubernetes中阻止来自特定命名空间的流量,kubernetes,kubernetes-networkpolicy,Kubernetes,Kubernetes Networkpolicy,我的k8集群中有多个名称空间。我只希望开发名称空间中的pod可以与其他名称空间中的所有其他pod通信,但不应该能够与生产名称空间中的资源通信 我无法找到此场景的文档。有一种否认一切的政策 --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-egress spec: podSelector: {} policyTypes: - Egress - Ingress

我的k8集群中有多个名称空间。我只希望开发名称空间中的pod可以与其他名称空间中的所有其他pod通信,但不应该能够与生产名称空间中的资源通信

我无法找到此场景的文档。有一种否认一切的政策

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-egress
spec:
  podSelector: {}
  policyTypes:
  - Egress
  - Ingress
但它适用于同一名称空间中的pod级别。我如何修改它以满足我的要求

从文档中引用

  • environment=dev

  • 使用
    environment=prod标记生产环境中的所有名称空间

  • 然后你可以有如下的网络策略

  • 默认拒绝策略,正如您已经使用的一样
  • 有一个策略,将标签为
    environment=prod
  • 如下

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

  • environment=dev

  • 使用
    environment=prod标记生产环境中的所有名称空间

  • 然后你可以有如下的网络策略

  • 默认拒绝策略,正如您已经使用的一样
  • 有一个策略,将标签为
    environment=prod
  • 如下

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

    我已经看到了nameSelector可以在这个场景中使用的东西。但是找不到任何示例。我已经看到了一些可以在这个场景中使用的名称选择器。但是我找不到任何例子。所以我猜政策是一种只允许,不允许的就被拒绝。如果我还有3个名称空间要允许访问,我还需要使用名称选择器添加它们;他们接受来自任何来源的流量。我已经看到了nameSelector可以在这个场景中使用的东西。但是找不到任何示例。我已经看到了一些可以在这个场景中使用的名称选择器。但是我找不到任何例子。所以我猜政策是一种只允许,不允许的就被拒绝。如果我还有3个名称空间要允许访问,我还需要使用名称选择器添加它们;他们接受来自任何来源的流量