我们目前正试图在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代理服务应该相当简单。
根据这一系列事件:
自定义LB的配置应该在Kong的服务中进行(如我所知):
# values.yml (Kong, using Helm)
...
proxy:
type: LoadBalancer
annotations: {} <-- Here
http:
...
tls:
...
...
但是,对于GCP,根据文档,只有少数几个,并且没有一个具有预期效果(无法设置要使用的证书,定义要创建的LB类型,等等)
考虑到所有因素,是否有办法实现我们的主要目标,即:
"在GKE中通过Helm部署Kong API网关,并将SSL终止委托给自定义Google的LB。"
TL; DR
不幸的是,不可能将Google管理的证书与Kong Ingress一起使用。
确切地说,GKE
中的谷歌托管证书只能用于:
正如文件所指出的:
注意:此功能仅适用于外部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之间建立安全连接,您需要:
证书管理器
为入口
控制器提供证书。
附带说明:在这两种情况下,SSL终止都将发生在入口控制器上。
回答问题部分:
自定义LB的配置应该在Kong的服务中进行(如我所知):
# values.yml (Kong, using Helm)
...
proxy:
type: LoadBalancer
annotations: {} <-- Here
...
但是,对于GCP,根据文档,只有少数几个,并且没有一个具有预期效果(无法设置要使用的证书,定义要创建的LB类型,等等)
如前所述,GKE
中类型为LoadBalancer
的服务
将配置L4TCP
/UDP
负载平衡器,该负载平衡器不负责处理SSL通信(SSL终止)。
额外资源:
我正在查找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