我正在尝试设置网络策略,以仅允许从AWS Classic负载均衡器到Pod的入站流量。没有其他应该能够与包含任何Pod副本的Pod通信的内容。我已经配置了以下内容,但是它不起作用。有什么想法我想念的吗?一旦应用此方法,负载平衡器上的运行状况检查就会失败。
apiVersion: apps/v1
kind: Deployment
metadata:
name: a-b-c1
labels:
app: a-b-c1
spec:
replicas: 1
selector:
matchLabels:
app: a-b-c1
template:
metadata:
labels:
app: a-b-c1
spec:
containers:
- name: a-b-c1
image: image:latest
ports:
- name: http-server1
containerPort: 80
resources:
requests:
cpu: 0.5
---
kind: Service
apiVersion: v1
metadata:
name: a-b-c-elb1
labels:
app: a-b-c1
name: a-b-c1-elb
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "environment=eks"
spec:
ports:
- port: 80
targetPort: http-server1
selector:
app: a-b-c1
type: LoadBalancer
loadBalancerSourceRanges:
- 10.0.0.0/8
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-elb
spec:
podSelector:
matchLabels:
app: a-b-c1
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
name: a-b-c1-elb
答案 0 :(得分:0)
我认为这在AWS中是不可能的。
在此网络策略中,您只能将进入限制为标有a-b-c1-elb
的Pod,但这并不代表服务,只能代表标有name: a-b-c1-elb
的假设Pod(它是podSelector,而不是serviceSelector,可惜不存在)。
网络策略允许使用Pod选择器,名称空间选择器或/和IP块匹配流量。在您的情况下,唯一可以完成此任务的是IP块。您可以将流量限制为负载均衡器的IP,这样就可以解决问题。
但是,在AWS中,负载均衡器具有临时IP,可以随时更改,因此无法限制流量到负载均衡器。您最多可以得到的是将流量限制到子网的CIDR。