我正在使用 Terraform 中的 Helm 图表创建 ingress-nginx 控制器。我确实有一个values.yaml 文件,可以在其中添加自定义信息,但我需要从 Terraform 资源传递 SSL 证书值,那么我该怎么做呢?我正在使用下面的代码,但出现错误。
\nresource "aws_acm_certificate" "ui_cert" {\n domain_name = var.DOMAIN_NAME\n validation_method = "DNS"\n\n tags = {\n Environment = var.ENVIRONMENT \n }\n\n lifecycle {\n create_before_destroy = true\n }\n\n}\n\nRun Code Online (Sandbox Code Playgroud)\nresource "helm_release" "nginix_ingress" {\n\n depends_on = [module.eks, kubernetes_namespace.nginix_ingress,aws_acm_certificate.ui_cert]\n\n name = "ingress-nginx"\n repository = "https://kubernetes.github.io/ingress-nginx"\n chart = "ingress-nginx"\n namespace = var.NGINX_INGRESS_NAMESPACE\n \n values = [templatefile("values.yaml", {\n controller.service.beta.kubernetes.io/aws-load-balancer-internal = aws_acm_certificate.ui_cert.name,\n })]\n}\nRun Code Online (Sandbox Code Playgroud)\n我收到以下错误:
\n Error: Reference to undeclared resource\n\xe2\x94\x82\n\xe2\x94\x82 on ui.tf line 27, in …Run Code Online (Sandbox Code Playgroud) amazon-web-services terraform kubernetes-helm terraform-provider-aws terraform-provider-helm
我在 Terraform 中使用 helm_release 资源时遇到问题。
我基本上部署了一个kube-prometheus-stack包含许多k8s资源并且运行顺利的。
当我尝试销毁(或删除)这部分时,问题出现了,因为卸载图表时 Helm 不会删除所有资源(这可能与某些垃圾收集规则有关,这些规则使它们在删除后保持正常运行)。这意味着我最终得到:
我之前问过一个问题(现在我要结束了),涉及了解这是否是 Helm 的问题(实际上不是,根据设计,它会尽可能删除所有内容,我不确定图表中是否可以做一些事情,但是无论如何,我假设现在不会很快完成)现在我想问是否有人知道如何直接从 Terraform 管理它。
例如,当资源被销毁时,我可以使用某些东西kubectl delete在标记的资源(或者可能是整个命名空间)上运行命令吗?helm_release
注意:我没有添加任何代码,因为这与代码无关,但更多的是寻找一些钩子或黑客仅在销毁后运行清理。
ps:我还尝试在应用后利用 Terraform 云挂钩,但我更愿意根据 Terraform Cloud 来解决这个问题,无论如何,我没有设法创建对是否已被helm_release销毁的依赖关系。
kubernetes terraform kubernetes-helm terraform-cloud terraform-provider-helm