我有一个在GKE上运行的Kubernetes 1.4.5集群,我想进行测试。它使用Ingress接受HTTPS,如下所示
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: keycloak-ingress
annotations:
kubernetes.io/ingress.allow-http: "false"
#kubernetes.io/ingress.class: "gce"
spec:
tls:
- secretName: mysecret
backend:
serviceName: keycloak-https-service
servicePort: 443
在测试中,我想限制可以访问我的群集的源IP。由于Load Balancer会将所有传入流量的源IP转换为本地IP地址,因此Google Cloud防火墙无法限制此流量。有没有办法限制进入负载均衡器的流量?
我知道这严格来说是一个GCE问题,但Kubernetes可能会提供一个解决方案。
答案 0 :(得分:4)
您正在查看管道:
GCE L7 LB - > vm:nodePort - >豆荚
交通流量:
GCE L7 LB - >你的vms
应该来自https://cloud.google.com/compute/docs/load-balancing/http/#fundamentals中提到的130.211.0.0/22。你应该已经有了防火墙规则。 交通流量:
vms - >容器
应该来自你的vm ips。你无法规范谁在谈论lb,你可以规范谁与节点交谈。
不幸的是,由于描述的情况,这对HTTP LB不起作用。它适用于L3 / L4 LB,因为您在最终位于vm的数据包中获得了实际客户端的源IP:http://kubernetes.io/docs/user-guide/load-balancer/#annotation-to-modify-the-loadbalancer-behavior-for-preservation-of-source-ip
答案 1 :(得分:0)
Cloud Armor产品使您可以使用IP白名单限制对负载均衡器的访问。自OP提出问题以来,可能已经引入了该产品。我使用Cloud Armor来IP限制负载均衡流量到Kubernetes Ingress。