我不清楚该怎么做。
我为集群创建服务,如下所示:
kubectl expose deployment my-deployment --type=LoadBalancer --port 8888 --target-port 8888
现在可以从端口8888上的Internet访问我的服务。但是我不希望这样,我只想从特定的公共IP列表中访问我的服务。如何将gcp防火墙规则应用于特定服务?尚不清楚其工作方式以及默认情况下为什么可以从Internet公开访问该服务。
答案 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