【发布时间】:2020-11-17 18:00:05
【问题描述】:
我们目前正在尝试在 GKE 集群中部署 Kong,目标是将证书管理委托给 Google 的负载均衡器(应在此处进行 SSL 终止)。
我们面临的问题是,所有 Google 的文档都专注于部署一些服务并使用他们独有的负载均衡器直接连接到声明的 Ingress。
当前工作的配置(没有 Kong)如下:
# values.yml (from Service X inside GKE, using Helm)
...
ingress:
enabled: true
hostname: example.com
annotations:
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.allow-http: "false"
kubernetes.io/ingress.global-static-ip-name: example-static-ip
ingress.gcp.kubernetes.io/pre-shared-cert: example-cert
...
但是,当我们将 gce 更改为 kong 作为 ingress.class 时,所有其他注释都不会继续工作。这是意料之中的,因为现在 Kong 的代理是 Load Balancer,应该是告诉 Google 的 LB 如何生成自己的代理。
根据这个documentation,将这些注释添加到Kong代理服务应该相当简单。
基于这一系列事件:
- K8s Ingress 创建 Kong 代理服务
- Kong 代理服务生成 Google 的 LB
自定义LB的配置应该在Kong的服务中进行(据我了解):
# values.yml (Kong, using Helm)
...
proxy:
type: LoadBalancer
annotations: {} <-- Here
http:
...
tls:
...
...
但是,对于GCP来说,根据docs的只有几个,都没有想要的效果(不能设置要使用的证书,定义要创建哪种类型的LB等)
考虑到所有因素,有什么方法可以实现我们的主要目标:
“通过 GKE 内部的 Helm 部署 Kong API 网关,并将 SSL 终止委托给自定义 Google 的 LB。”
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine kong google-cloud-load-balancer