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