Terraform "helm_release"资源的输出

3

是否可以在 Terraform 中导出未由 Terraform 配置的特定 Helm 值作为输出呢? 例如,我通过 Terraform 使用 Helm 创建了 nginx ingress 控制器,现在我想要导出其外部 IP(该 IP 不是由 Terraform 创建的,而是一个内部 IP)。

谢谢!


1
你已经尝试过什么了? - Marko E
@MarkoE 在我的 outputs.tf 文件中,我为该外部 IP 创建了一个新的输出。 然后,看起来我有几个选项(manifest、metadata 等),但没有一个与导出 IP 值相关。 - Tomer Aharon
那么外部IP是在Terraform之外创建的吗? - Marko E
@MarkoE 使用helm chart注释部署: set { name = "controller.service.annotations.service\.beta\.kubernetes\.io/azure-load-balancer-internal" value = var.internal_lb(取决于最终用户的选择,为true或false) } - Tomer Aharon
你可以使用Azure CLI来获取该值,这听起来像个好主意吗?结合类似于“null_resource”的东西。 - Marko E
显示剩余11条评论
1个回答

4

您可以在Terraform中使用data块从现有资源中获取输出,您可以在文档中了解更多信息。

在您的情况下,可以进行如下操作:

data "kubernetes_service" "ingress_svc" {
  metadata {
    name = "ingress_svc"
  }
}

output "instance_ip_addr" {
  value = data.kubernetes_service.ingress_svc.status.0.load_balancer.0.ingress[0].ip
}

你可以在Kubernetes提供者的文档中了解更多相关信息。


1
请你能解释一下你是如何得出这个值的吗?我指的是关于"status"的部分,它是一个以0为索引的数组,并且还有其他的"loadbalancer.0.ingress[0]"。我在文档中找不到这个内容。我问这个问题是因为我还想提取出ingress类的值,这样我就可以在其他服务中使用它。谢谢。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接