【问题标题】:Is it possible to have multiple ingress resources with a single GKE ingress controller是否可以使用单个 GKE 入口控制器拥有多个入口资源
【发布时间】:2021-03-18 03:27:33
【问题描述】:

GKE Ingress documentation 它指出:

当您创建 Ingress 对象时,GKE Ingress 控制器会创建一个 Google Cloud HTTP(S) 负载均衡器,并根据 Ingress 及其关联服务中的信息对其进行配置。

对我来说,我似乎不能使用单个 GCP 入口控制器拥有多个 ingress resources。相反,GKE 会为每个入口资源创建一个新的入口控制器。

真的是这样吗,或者 GKE 中是否可以使用单个入口控制器拥有多个入口资源?

我希望将一个 GCP LoadBalancer 作为配置了静态 IP 和 DNS 的入口控制器,然后让多个应用程序在集群中运行,每个应用程序都使用特定于应用程序的主机和/或路径规范注册自己的入口资源。

请注意,总的来说,我对 GKE、GCP 和 Kubernetes 很陌生,所以我可能误解了一些东西。

【问题讨论】:

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


    【解决方案1】:

    我认为您实际提出的问题与您所写的略有不同。您想知道是否可以将多个 Ingress 资源链接到单个 GCP 负载均衡器,而不是 GKE Ingress 控制器。基于concept of a controller,集群中只有一个GKE Ingress控制器,负责实现多个资源,提供多个负载均衡。

    所以,直接回答这个问题(因为我一直在寻找一个直接的答案!):

    将多个 Ingress 资源组合到单个 Google Cloud 负载中 不支持平衡器。

    来源:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress

    伤心。

    但是,使用 nginx-ingress 控制器是一种至少可以最小化配置的外部 (GCP) 负载均衡器数量的方法(它只配置一个 TCP 负载均衡器),但由于负载均衡器用于 TCP 流量,它无法终止 SSL,或为您应用防火墙规则(例如,不能使用 Cloud Armor)。

    我知道在 GCP 中使用单个 HTTPS 负载平衡器终止 SSL 并将流量路由到 GKE 中的多个服务的唯一方法是将入口组合到一个资源中,并将所有路径和证书定义在一个地方。

    (如果有人想出一种使用多个独立入口资源的方法,我很乐意听到!)

    【讨论】:

      【解决方案2】:

      是的,可以为多个入口资源使用单个入口控制器。

      您可以根据路径要求创建多个入口资源,所有资源都将由单个入口控制器管理。

      还有多个入口控制器选项可供您使用,您也可以使用 Nginx 创建一个 LB 并管理路径。

      在 Kubernetes 中,如果您使用 type LoadBalancer 创建服务,它将在 GCP 中创建 新的 LB 资源,因此请确保您的微服务类型是ClusterIP,你的所有流量都通过ingress路径进入K8s集群。

      当您设置入口控制器时,它将创建一个类型为 LoadBalancer 的服务,您可以在 DNS 服务器中使用该 IP 将子域和路径转发到 K8s 集群。

      【讨论】:

      • 谢谢,这对我来说很有意义。因此,我应该使用 GCP LB,而不是使用 GKE Ingress,并使用 Nginx 或 Ambassador 等作为入口控制器。这听起来很合理。谢谢你非常清楚的回答,它解释了很多。
      • 您可以根据您的要求使用任何东西,Ambassador 有一些 Nginx 不支持 GKE 入口的功能。这取决于组织的要求或您运行预期流量的工作负载类型。
      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 2021-11-20
      • 2019-04-24
      • 2020-02-17
      • 1970-01-01
      • 2019-07-22
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多