我遇到了 Terraform EKS 标记的问题,似乎找不到可行的解决方案来标记创建新集群时的所有 VPC 子网。
一些背景信息:我们有一个 AWS VPC,在其中部署了几个 EKS 集群到子网中。我们不会在创建 EKS 集群时创建 VPC 或子网。因此,创建集群的 Terraform 代码无法标记现有的子网和 VPC。虽然 EKS 将添加所需的标记,但它们在下次运行 terraform apply 时会自动删除。
我的解决方法是在 VPC 中提供一个 terraform.tfvars 文件,如下所示:
然而,上述方法似乎不起作用。我尝试了来自https://www.terraform.io/docs/configuration-0-11/interpolation.html的各种Terraform 0.11函数,但它们都没有帮助。
有人能解决这个问题吗?
我们总是为每个EKS集群创建新的VPC和子网的想法是错误的。显然,必须有一种使用Terraform标记现有VPC和子网资源的方法?
一些背景信息:我们有一个 AWS VPC,在其中部署了几个 EKS 集群到子网中。我们不会在创建 EKS 集群时创建 VPC 或子网。因此,创建集群的 Terraform 代码无法标记现有的子网和 VPC。虽然 EKS 将添加所需的标记,但它们在下次运行 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",
]
然后在VPC和子网资源中,我们做了类似的事情
resource "aws_vpc" "demo" {
cidr_block = "10.0.0.0/16"
tags = "${
map(
${var.eks_tags}
)
}"
}
然而,上述方法似乎不起作用。我尝试了来自https://www.terraform.io/docs/configuration-0-11/interpolation.html的各种Terraform 0.11函数,但它们都没有帮助。
有人能解决这个问题吗?
我们总是为每个EKS集群创建新的VPC和子网的想法是错误的。显然,必须有一种使用Terraform标记现有VPC和子网资源的方法?
provider "aws" { region = var.region ignore_tags { key_prefixes = ["kubernetes.io"] } }
代码片段在此处找到:https://github.com/hashicorp/terraform/issues/5666#issuecomment-747746639 - cedric