Azure Kubernetes中Pod间通信限制的Network Policy实现
Kubernetes Network Policy 配置清单
前提说明
假设两个Deployment的Pod标签及对应oauth2反向代理标签如下:
myservice1的Pod标签:app: myservice1,对应代理标签:app: oauth-proxy-myservice1myservice2的Pod标签:app: myservice2,对应代理标签:app: oauth-proxy-myservice2
1. 针对 myservice1 的 Network Policy
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: myservice1-network-policy spec: podSelector: matchLabels: app: myservice1 policyTypes: - Ingress - Egress # 入站规则:仅允许对应oauth代理的流量接入 ingress: - from: - podSelector: matchLabels: app: oauth-proxy-myservice1 # 出站规则:仅允许访问对应oauth代理,禁止其他所有出站流量 egress: - to: - podSelector: matchLabels: app: oauth-proxy-myservice1
2. 针对 myservice2 的 Network Policy
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: myservice2-network-policy spec: podSelector: matchLabels: app: myservice2 policyTypes: - Ingress - Egress # 入站规则:仅允许对应oauth代理的流量接入 ingress: - from: - podSelector: matchLabels: app: oauth-proxy-myservice2 # 出站规则:仅允许访问对应oauth代理,禁止其他所有出站流量 egress: - to: - podSelector: matchLabels: app: oauth-proxy-myservice2
关键规则说明
- 同一Deployment内Pod互访限制:通过Egress规则仅允许Pod访问对应代理,阻断了同Deployment内其他Pod的出站请求;同时Ingress规则仅放行代理的入站流量,双向限制实现禁止同Deployment内Pod通信。
- 不同Deployment间Pod通信限制:两个Network Policy的Ingress/Egress规则仅针对各自的代理,未开放任何来自对方Deployment Pod的流量权限,因此不同Deployment的Pod无法互相通信。
- 仅允许代理接入请求:Ingress规则明确限定只有对应oauth代理的流量能进入Pod,外部请求必须经过代理认证后才能访问后端服务,满足接入限制要求。
内容的提问来源于stack exchange,提问作者Aniss Chohra
相关产品推荐
相关产品推荐

