首页 > 解决方案 > 将 GCP 节点区域值注入 Nginx 入口控制器以进行区域感知路由

问题描述

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

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

是否有任何可行的解决方案将节点区域注入 Nginx pod,以便我可以使用环境变量以及 Nginx 中的地图功能来选择正确的上游后端。

先感谢您

标签: kubernetesgoogle-cloud-platformgoogle-kubernetes-enginenginx-ingress

解决方案


一个选项可能是您通过 Downward API 注入节点名称,然后使用sidecar 容器通过Google Cloud API 获取区域,最后相应地注入环境变量。

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


推荐阅读