如何将nginx与Kubernetes(GKE)和Google HTTPS负载均衡器配合使用

我们利用Ingress创建HTTPS负载均衡器,直接转发到我们的(通常是nodejs)服务.但是,最近我们希望在Google负载均衡器不提供的nodejs前面更多地控制流量.

>标准化的自定义错误页面
>标准重写规则(例如将http重定向到https)
>从负载均衡器运行状况检查中解除pod readyinessProbes(因此,当没有健康的pod时,我们仍然可以提供自定义错误页面).

我们在堆栈的其他部分使用nginx,所以这似乎是一个不错的选择,我已经看到了几个nginx用于Kubernetes前端服务的例子,通常是两种配置中的一种.

>每个pod中的nginx容器直接将流量转发到localhost上的应用程序.
>一个单独的nginx部署&服务,独立扩展并将流量转发到适当的Kubernetes服务.

每种方法的优缺点是什么?如何确定哪种方法最适合我们的用例?

最佳答案
继Vincent H之后,我建议将Google HTTPS Load Balancer流水线化为nginx入口控制器.

正如您所提到的,这可以独立扩展;有它自己的健康检查;并且您可以标准化您的错误页面.

我们通过使用单个kubernetes.io/ingress.class:“gce”入口对象来实现这一目标,该对象具有我们的nginx入口控制器的默认后端.我们所有其他入口对象都使用kubernetes.io/ingress.class注释:“nginx”.

我们使用此处记录的控制器:https://github.com/kubernetes/ingress/tree/master/controllers/nginx.使用custom /etc/nginx/template/nginx.tmpl可以完全控制入口.

For complete transparency, we haven’t (yet) setup custom error pages in the nginx controller, however the 07002 appears straight forward.

转载注明原文:如何将nginx与Kubernetes(GKE)和Google HTTPS负载均衡器配合使用 - 代码日志