当前位置: 首页 > 知识库问答 >
问题:

通过Helm在GKE中部署Kong API网关并使用Google管理的证书

郭子航
2023-03-14

我们目前正试图在GKE集群中部署Kong,目标是将证书管理委托给谷歌的负载均衡器(SSL终止应该在这里进行)。

我们面临的问题是,谷歌的所有文档都专注于部署一些服务,并使用其专用的负载平衡器直接连接到入口。

当前工作的配置(没有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作为入口时。类,所有其他注释都无法继续工作。这是意料之中的,因为现在Kong的代理是负载均衡器,应该是告诉Google的LB如何生成自己的代理。

根据这个留档,将这些注释添加到Kong代理服务应该相当简单。

根据这一系列事件:

  • K8s Ingress创建香港代理服务

自定义LB的配置应该在Kong的服务中进行(如我所知):

# values.yml (Kong, using Helm)
...
proxy:
  type: LoadBalancer
  annotations: {} <-- Here
  http:
    ...
  tls:
    ...
...

但是,对于GCP,根据文档,只有少数几个,并且没有一个具有预期效果(无法设置要使用的证书,定义要创建的LB类型,等等)

考虑到所有因素,是否有办法实现我们的主要目标,即:

"在GKE中通过Helm部署Kong API网关,并将SSL终止委托给自定义Google的LB。"

共有1个答案

谢俊悟
2023-03-14

TL; DR

不幸的是,不可能将Google管理的证书与Kong Ingress一起使用。

确切地说,GKE中的谷歌托管证书只能用于:

  • 外部HTTP(S)负载均衡入口

正如文件所指出的:

注意:此功能仅适用于外部HTTP负载平衡的入口。

Cloud.google.com:库伯内特斯引擎:文档:如何:托管证书

根据文件(稍加修改):

创建具有以下类的入口对象时:

  • kubernetes.io/ingress.class: gce

GKE Ingress controller创建一个Google Cloud HTTP(S)负载平衡器,并根据Ingress及其相关服务中的信息对其进行配置。

--云。谷歌。com:Kubernetes引擎:入口:外部和内部流量入口

使用不同的ingres控制器,如(nginx-ingres,traefik,kong)需要使用负载平衡器类型的服务

在GKE中使用上述Service将自动创建指向您的入口控制器的外部TCP/UDP网络负载均衡器(L4)。从这一点开始,流量将被重定向到基于具有适当的ingress.class资源的特定服务。

小费!

你可以在金刚的掌舵图上看到,它也在用同样的方法!

  • 舵机安装Kong/kong-ingress--dry-run--debug

要在客户端和Kong之间建立安全连接,您需要:

  • 使用证书管理器入口控制器提供证书。
    • 证书管理员。io:文档
    • Kubernetes.io:秘密:TLS秘密

    附带说明:在这两种情况下,SSL终止都将发生在入口控制器上。

    回答问题部分:

    自定义LB的配置应该在Kong的服务中进行(如我所知):

    # values.yml (Kong, using Helm)
    ...
    proxy:
      type: LoadBalancer
      annotations: {} <-- Here
    ...
    

    但是,对于GCP,根据文档,只有少数几个,并且没有一个具有预期效果(无法设置要使用的证书,定义要创建的LB类型,等等)

    如前所述,GKE中类型为LoadBalancer服务将配置L4TCP/UDP负载平衡器,该负载平衡器不负责处理SSL通信(SSL终止)。

    额外资源:

    • 云。谷歌。com:负载平衡:文档:网络

 类似资料:
  • 我正在查找Kong API网关,并通过Google Cloud Marketplace在GKE上部署了一个Kong实例。我想向这个实例添加一个自定义的Kong插件,并为我的服务启用它。我怎么做呢?有什么资源可以让我对这件事有所了解吗?非常感谢。

  • 快速启动 $ cd ./script/server/helm/seata-server $ helm install seata-server ./seata-server 自定义配置 环境变量 支持的环境变量和 Docker 相同,可以参考 使用 Docker 部署 Seata Server 使用自定义配置文件 指定配置文件可以通过挂载的方式实现,如将/root/workspace/seata

  • 我正在尝试使用Kubernetes helm图表实现Kubernetes服务部署。实际上,我正在使用Jenkins管道作业进行部署。Jenkins安装在Kubernetes集群的外侧。所以如果我在安装Jenkins的机器中使用Helm,那么我可以在Jenkins管道作业中使用Helm部署命令吗? 如果我在一个Jenkins管道作业中调用“helm install”命令?它是否部署到远程Kubern

  • Creating your own ERC721 Token on MOAC blockchain Before you read this page, you should: Understand the following general concepts: blockchain, smart contracts, ERC721 tokens; Be able to write a basic

  • Creating your own ERC20 Token on the MOAC blockchain Before you read this page, you should: Understand the following general concepts: blockchain, smart contracts, ERC20 tokens; Be able to write a bas

  • 读完本文后您应该可以自己创建chart,并创建自己的私有chart仓库。 Helm是一个kubernetes应用的包管理工具,用来管理charts——预先配置好的安装包资源,有点类似于Ubuntu的APT和CentOS中的yum。 Helm chart是用来封装kubernetes原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。 Helm