【问题标题】:how do I add a firewall rule to a gke service?如何将防火墙规则添加到 gke 服务?
【发布时间】:2019-04-26 13:38:33
【问题描述】:

我不清楚该怎么做。

我像这样为我的集群创建一个服务:

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

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

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

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

      您也可以参考Restrict Access For LoadBalancer Service 以获得更多控制权。

      【讨论】:

        【解决方案3】:

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

        您可以使用一些 Ingress 控制器进行这种过滤,但我认为现在不包括 ingress-gce,所以设置起来会有些时髦。

        【讨论】:

          猜你喜欢
          • 2020-06-29
          • 1970-01-01
          • 1970-01-01
          • 2021-04-26
          • 2020-06-08
          • 1970-01-01
          • 1970-01-01
          • 2014-01-14
          • 2016-07-30
          相关资源
          最近更新 更多