GCP:Kubernetes 集群前面 VM 上的反向代理
GCP: Reverse Proxy on VM in front of Kubernetes cluster
我们 运行 一个 Kubernetes 集群托管数据库、各种微服务和一个 nginx
反向代理,所有这些都在容器中。我们有一个 Google load balancer 和一个转发到反向代理的转发规则,请求从那里被代理到适当的微服务。
这很好用,但是反向代理永远不会显示连接到它的客户端的 IP 地址。 (尽管 this documentation 表明可以通过 HTTP headers 获取此信息,但我们运气不佳,只能在我们的 GCP default
网络上看到 IP。)
按照另一个 SO 问题中的建议 - 我暂时放错了 link - 我想在 VM 实例上部署 nginx
,它 做 可以访问连接客户端的 IP,然后将来自该实例的请求转发到集群中。
那么我的问题是:每个微服务都监听一个 TCP 端口并配置了一个 k8s Service
。我如何从我的 nginx
VM 中引用这些 k8s Service
s?我可以通过 DNS 或通过入口控制器来完成吗?
或者,如果您 可以 实际上确定 Google 负载平衡器背后的外部 IP 地址,我宁愿这样做。我记得读过一个很长的 k8s GitHub 问题,表明那还有一段路要走。
你要找的是http proxy protocol
https://www.nginx.com/resources/admin-guide/proxy-protocol/
请注意,google 负载均衡器和您的 nginx 必须同时配置为使用代理协议。
如果其中一个使用代理协议,而另一个不使用,则没有任何效果。
我们 运行 一个 Kubernetes 集群托管数据库、各种微服务和一个 nginx
反向代理,所有这些都在容器中。我们有一个 Google load balancer 和一个转发到反向代理的转发规则,请求从那里被代理到适当的微服务。
这很好用,但是反向代理永远不会显示连接到它的客户端的 IP 地址。 (尽管 this documentation 表明可以通过 HTTP headers 获取此信息,但我们运气不佳,只能在我们的 GCP default
网络上看到 IP。)
按照另一个 SO 问题中的建议 - 我暂时放错了 link - 我想在 VM 实例上部署 nginx
,它 做 可以访问连接客户端的 IP,然后将来自该实例的请求转发到集群中。
那么我的问题是:每个微服务都监听一个 TCP 端口并配置了一个 k8s Service
。我如何从我的 nginx
VM 中引用这些 k8s Service
s?我可以通过 DNS 或通过入口控制器来完成吗?
或者,如果您 可以 实际上确定 Google 负载平衡器背后的外部 IP 地址,我宁愿这样做。我记得读过一个很长的 k8s GitHub 问题,表明那还有一段路要走。
你要找的是http proxy protocol
https://www.nginx.com/resources/admin-guide/proxy-protocol/
请注意,google 负载均衡器和您的 nginx 必须同时配置为使用代理协议。 如果其中一个使用代理协议,而另一个不使用,则没有任何效果。