我们运行一个Kubernetes集群,托管数据库,各种微服务和nginx
反向代理,所有这些都在容器中。我们有一个Google load balancer和一个转发到反向代理的转发规则,并从那里请求代理到相应的微服务。
这很好用,但反向代理永远不会显示连接到它的客户端的IP地址。 (尽管this documentation表示可以通过HTTP标头获取此信息,但我们没有运气,只能看到我们的GCP default
网络上的IP。)
在另一个SO问题中提出建议 - 我暂时放错了其链接 - 我希望在VM实例上部署nginx
,而 可以访问连接客户端IP,然后将该实例的请求转发到集群中。
我的问题是:每个微服务器都在TCP端口上侦听并配置了k8s Service
。如何在我的Service
VM中引用这些k8 nginx
?我可以通过DNS或入口控制器来完成吗?
或者,如果 实际上确定了Google负载均衡器背后的外部IP地址,我宁愿这样做。我记得读过很长时间的k8s GitHub问题,显示它还有一段路要走。
答案 0 :(得分:2)
您要找的是http proxy protocol
https://www.nginx.com/resources/admin-guide/proxy-protocol/
请注意,谷歌负载均衡器和您的nginx必须配置为同时使用代理协议。 如果其中一个使用代理协议,而另一个没有使用,则什么都不起作用。