如何与Nginx Ingress一起使用GKE Ingress?

时间:2019-08-12 06:39:47

标签: kubernetes google-kubernetes-engine kubernetes-ingress nginx-ingress

GKE入口:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress

Nginx入口:https://kubernetes.github.io/ingress-nginx/

为什么要使用GKE进入

GKE Ingress可以与Google的托管SSL证书一起使用。这些证书部署在负载均衡器的边缘服务器中,这导致TTFB(到达第一个字节的时间)非常低

GKE Ingress有什么问题

HTTP /域路由是使用非常昂贵的“转发规则”在负载均衡器中完成的。每条规则的费用约为7.2美元。每个域需要一个规则。

为什么要使用Nginx Ingress

Nginx Ingress还创建(TCP / UP)负载平衡器,在这里我们可以使用入口控制器指定HTTP /域的路由。由于路由是在集群内部完成的,因此将域添加到规则中不会产生任何额外费用

Nginx Ingress有什么问题

要启用SSL,我们可以使用cert-manager。但是如上所述,Google的托管证书在边缘服务器中部署证书,这导致非常低的延迟

我的问题

是否可以同时使用它们?这样HTTPS会首先请求命中GKE入口,该入口将终止SSL并将流量路由到Nginx入口,该流量会将其路由到相应的Pod

1 个答案:

答案 0 :(得分:1)

无法将Ingress指向另一个Ingress。此外,在您的特定情况下,也无法将GCE ingress class指向Nginx,因为它relies in an HTTP(S) Load Balancer(只能具有GCE实例/ instances groups(基本上是GKE中的节点池)),或将GCS buckets设为backends

如果要使用GKE部署Nginx入口,它将启动Network Load Balancer,这对于HTTP(S)负载均衡器而言不是有效的后端。

因此无法通过Ingress或GCP基础架构功能来实现。但是,如果需要先击GCE ingress class,然后再使用Nginx管理进一步的路由,则可能要考虑让Nginx作为Kubernetes Service / Deployment来管理传入的流量一次在群集网络内。

您可以创建ClusterIP服务,以使用本地本地hostnames重定向到群集中的其他服务/应用程序来内部访问Nginx部署并从那里进行访问。