我有一个用例,需要允许从LoadBalancer子网到Web服务的传入流量,但限制其他Pod访问Pod。
通常,如果我将K8与Flannel / Weave或类似的CNI一起使用,则CIDR将不同于VPC的实际网络,因此我可以使用以下示例: https://stackoverflow.com/a/54281975/11949720
但是,由于我使用的是EKS,因此VPC-CNI为Pod提供了与VPC和其他主机相同的子网,因此将Loadbalancer子网列入白名单也将Pod子网列入白名单,因此该集群中的任何Pod都将能够访问裸露的吊舱。
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
name: managment-access
namespace: frontend-layer
spec:
ingress:
- ports:
- port: 9090
from:
- podSelector:
matchLabels:
type: collectors
- ipBlock:
cidr: 172.31.64.0/20
- ipBlock:
cidr: 172.31.80.0/20
- ipBlock:
cidr: 172.31.48.0/20
podSelector:
matchLabels:
app.kubernetes.io/name: managment
policyTypes:
- Ingress
我知道我可以重新配置EKS以对吊舱使用自定义网络,它可能会解决此问题,但是,我希望找到一个更不可知的解决方案,因为我的猜测是即使使用AKS-CNI,它也会是同样的问题。