我可以将源IP限制为由Ingress创建的GCP负载均衡器

时间:2016-11-16 15:22:50

标签: google-cloud-platform google-kubernetes-engine

我有一个在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可能会提供一个解决方案。

2 个答案:

答案 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。

https://cloud.google.com/armor/docs/security-policy-concepts#ip_address_allow_list_and_deny_list_rules_in_a_security_policy