使用 terraform 从外部创建的负载均衡器获取 IP

Get IP from externally created load balancers with terraform

我正在使用 terraform 模块来创建 GKE 集群。同一个模块调用执行应用程序 helm install 的配置器。

helm chart 创建负载均衡器。 Terraform 模块不知道负载均衡器,因此分配的 IP 地址不能在模块中重复使用。

问题:

如何使用负载均衡器的 IP 创建 DNS 条目并获取证书?

我认为这不是奇特的用例,但我还没有找到实现它的合适方法。

这道题的正确答案是:

kubernetes_service的数据源。

Data Source的概念正是解决了这里的问题。

Appart 从上面的 kubernetes_service 数据源我也可以 运行 一个 shell 脚本与 kubectl 查询 ip 并使用 External Data Source 作为通用解决方案。

从那里我可以在 dns 提供程序和 acme 提供程序中使用 IP 地址来创建 dns 条目和证书。

在我的例子中,云提供商没有公开 load_balancer_ip 所以我不得不通过 h​​elm 创建服务 type: NodePort 并直接通过 terraform 手动创建负载均衡器。

我想这是在 由于这个特定原因而无法工作的情况下的有效解决方法,并且 helm chart 提供了将服务部署为不同 type 的方法。