我遇到了 Terraform EKS 标记问题,似乎没有找到可行的解决方案来在创建新集群时标记所有 VPC 子网。
提供一些背景信息:我们有一个 AWS VPC,我们将多个 EKS 集群部署到子网中。我们不创建 VPC 或子网是 EKS 集群创建的一部分。因此,创建集群的 terraform 代码无法标记现有子网和 VPC。虽然 EKS 会添加所需的标签,但下次我们在 VPC 上运行 terraform apply 时,它们会自动删除。
我的解决方法是在 VPC 中提供一个 terraform.tfvars 文件,如下所示:
eks_tags =
[
"kubernetes.io/cluster/${var.cluster-1}", "shared",
"kubernetes.io/cluster/${var.cluster-2}", "shared",
"kubernetes.io/cluster/${var.cluster-2}", "shared",
]
Run Code Online (Sandbox Code Playgroud)
然后在 VPC 和子网资源中,我们执行类似的操作
resource "aws_vpc" "demo" {
cidr_block = "10.0.0.0/16"
tags = "${
map(
${var.eks_tags}
)
}"
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的方法似乎不起作用。我已经尝试了https://www.terraform.io/docs/configuration-0-11/interpolation.html 中的各种 Terraform 0.11 功能,但没有任何帮助。
有没有人能够解决这个问题?
我们总是为每个 EKS 集群创建新的 VPC 和子网的想法是错误的。显然,必须是一种使用 Terraform 标记现有 VPC 和子网资源的方法吗?