如何使用 NetworkPolicy 隔离命名空间中的 pod,而不禁用 Kubernetes pod 的外部流量

Pra*_*esh 6 kubernetes kubernetes-networkpolicy kubernetes-ingress kubernetes-networking

我正在尝试将命名空间中的 pod 与其他命名空间隔离。我尝试创建一个 NetworkPolicy:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-from-other-namespaces
spec:
  podSelector:
    matchLabels:
  ingress:
  - from:
    - podSelector: {}
Run Code Online (Sandbox Code Playgroud)

此 NetworkPolicy 成功将我的命名空间中的 Pod 与另一个命名空间隔离。但此策略一旦应用,就会禁用到这些 Pod 的所有外部流量。是否有任何方法可以仅阻止来自其他命名空间的流量并允许所有外部流量到达 Pod。

ode*_*S0n 1

使用 kubernetes 网络策略 我认为不可能在允许所有外部流量的同时拒绝 Pod 之间的通信。这是因为 kubernetes networkPolicy 资源没有显式拒绝规则的概念。我会调整您的方法或考虑另一个具有拒绝规则的网络策略(例如Calico)。

解决方案:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: deny-other-namespaces
  namespace: prod
spec:
  selector: all()
  types:
  - Ingress
  - Egress
  ingress:
  - action: Deny
    protocol: TCP
    source:
      namespaceSelector: name == 'dev'
  - action: Allow
  egress:
  - action: Allow
Run Code Online (Sandbox Code Playgroud)