Nginx 如何在群集边缘使用SSL终止和客户端证书验证公开GKE TCP服务

Nginx 如何在群集边缘使用SSL终止和客户端证书验证公开GKE TCP服务,nginx,kubernetes,google-cloud-platform,google-kubernetes-engine,gke-networking,Nginx,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Gke Networking,我正在寻找一种向外界公开多个GKE TCP服务的通用方法。我想要在群集边缘终止的SSL。如果可能的话,我也更喜欢基于客户端证书的身份验证 我当前的用例是从私有数据中心(并且仅从那里)访问部署在GKE中的PostgreSQL服务。但基本上,我对一个解决方案感兴趣,该解决方案适用于任何基于TCP的服务,而无需内置SSL和身份验证 一种选择是将nginx部署为TCP服务的反向代理,使用LoadBalancer(L4,网络负载平衡器)类型的服务公开nginx,并使用SSL和客户端证书验证配置nginx

我正在寻找一种向外界公开多个GKE TCP服务的通用方法。我想要在群集边缘终止的SSL。如果可能的话,我也更喜欢基于客户端证书的身份验证

我当前的用例是从私有数据中心(并且仅从那里)访问部署在GKE中的PostgreSQL服务。但基本上,我对一个解决方案感兴趣,该解决方案适用于任何基于TCP的服务,而无需内置SSL和身份验证

一种选择是将nginx部署为TCP服务的反向代理,使用LoadBalancer(L4,网络负载平衡器)类型的服务公开nginx,并使用SSL和客户端证书验证配置nginx


是否有更好、更具GKE本土特色的方式来实现这一目标?

据我所知,没有GKE本土特色的方式来实现您所需要的目标

如果这只是处理基于HTTP的流量,您可以简单地使用,但要考虑:

但基本上我对一个适用于任何TCP的解决方案感兴趣 没有内置SSL和身份验证的基于服务

这不是您的用例

因此,您可以继续使用您已经设置的功能,因为它似乎运行良好,或者作为您可以使用的替代方案:

  • ✅ , 它能够向外部世界公开不仅基于HTTP/HTTPS的流量,而且可以代理到达任意端口的TCP连接

  • ✅ 您可以使用TLS终止代理作为后面的侧车(类似或)。由于它不是一个代理,而是一个直通LB,它不能提供SSL终止,只能将加密的TCP通信量传递到后端
    Pod
    ,在后端需要由上述侧车处理

  • ❌ 从中介绍的GCP本机负载平衡解决方案来看,乍看起来可能很有用,因为它可以通过SSL卸载处理TCP流量❗它只支持有限的一组已知TCP端口,据我所知,您需要能够公开任意TCP端口,因此这对您没有多大帮助:

  • 对以下端口的SSL代理负载平衡支持:25、43、110、143、195、443、465、587、700、993、995、1883、3389、5222、5432、, 5671、5672、5900、5901、6379、8085、8099、9092、9200和9300。什么时候 您可以将Google管理的SSL证书与SSL代理加载一起使用 平衡时,流量的前端端口必须为443才能启用 Google管理要设置和续订的SSL证书