将GCP节点区域值注入Nginx入口控制器以进行区域感知路由

时间:2019-03-08 13:48:22

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

我希望在多个区域中部署Nginx入口控制器,并希望能够使用环境变量将区域/区域标签注入到我的pod中,以进行区域感知路由。在区域感知路由中,在区域上运行的Pod将流量发送到在区域a上运行的后端服务器。这实质上将减少区域间的成本。

我研究了向下的API,但是这似乎只是从pod /服务而不是从运行这些pod的节点注入标签/元数据。

有没有可行的解决方案将节点区域注入Nginx pod,以便我可以使用Environment变量以及Nginx中的地图功能来选择合适的上游后端。

提前谢谢

1 个答案:

答案 0 :(得分:0)

一种选择可能是您通过Downward API注入节点名称,然后使用一个gets the zone through Google Cloud API sidecar容器,最后相应地注入环境var。

通常将环境变量从容器注入另一个容器并不容易。 首先,这样的容器应该在主容器之前运行-这可以在Kubernetes中通过init containers实现。 其次,您需要注入信息。一种选择是使用共享卷(但您需要一种方法来观看它或在主容器启动时读取它以填充env var)。另一种选择是使用configmaps,其中sidecar / init容器将填充要由主容器使用的configmap-显然是这个问题has been already solved, e.g., here