如何为GKE服务添加防火墙规则?

时间:2018-11-24 04:41:40

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

我不清楚该怎么做。

我为集群创建服务,如下所示:

kubectl expose deployment my-deployment --type=LoadBalancer --port 8888 --target-port 8888

现在可以从端口8888上的Internet访问我的服务。但是我不希望这样,我只想从特定的公共IP列表中访问我的服务。如何将gcp防火墙规则应用于特定服务?尚不清楚其工作方式以及默认情况下为什么可以从Internet公开访问该服务。

3 个答案:

答案 0 :(得分:0)

我认为LoadBalancer服务当前不支持此功能。您可以在https://github.com/kubernetes/kubernetes/blob/1e50c5711346e882a54e833a9931af9678af7a82/pkg/cloudprovider/providers/gce/gce_annotations.go#L35上找到GCE GLB服务提供商当前读取的注释,它只是设置LoadBalancer类型,共享模式和网络SLA层。

您可以使用某些Ingress控制器进行这种过滤,但我认为目前尚不包含ingress-gce,因此设置起来有些时髦。

答案 1 :(得分:0)

由于负载均衡器在您的网络内,因此创建后,您可以创建一个入口firewall rule来拒绝或允许任何带有"tag"的源IP(假设您记住授权的IP)您在群集instance template中的防火墙标签,您可以通过在群集instance group上添加标签并在实例组上滚动更新来对群集Restrict Access For LoadBalancer Service进行群集,在这种情况下,所有节点群集都将具有限制一些IP。

您也可以参考{{3}}以获得更多控制。

答案 2 :(得分:0)

loadBalancerSourceRanges似乎可以工作,并且还可以为该服务动态创建动态创建的GCE防火墙规则

apiVersion: v1
kind: Service
metadata:
  name: na-server-service
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  loadBalancerSourceRanges:
  - 50.1.1.1/32