Terraform创建EKS群集后,下一个计划将看到子网对标签的更改

时间:2018-09-12 08:44:01

标签: terraform amazon-eks

我打算使用Terraform来支持我在AWS中的整个监视基础架构。 到目前为止,在我的terraform项目中已经创建了VPC,子网,适当的安全组。我在可能的情况下使用Terraform Registry:

我看到的问题是,在部署EKS群集之后,它向VPC和子网引入了Terraform似乎不知道的标签。因此,下一次运行terraform plan时,它将标识它不管理的标签并打算删除它们:

------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  ~ module.vpc.aws_subnet.private[0]
      tags.%:                                "4" => "3"
      tags.kubernetes.io/cluster/monitoring: "shared" => ""

  ~ module.vpc.aws_subnet.private[1]
      tags.%:                                "4" => "3"
      tags.kubernetes.io/cluster/monitoring: "shared" => ""

  ~ module.vpc.aws_vpc.this
      tags.%:                                "4" => "3"
      tags.kubernetes.io/cluster/monitoring: "shared" => ""


Plan: 0 to add, 3 to change, 0 to destroy.

------------------------------------------------------------------------

terraform-provider-awslocal workaround using bash之间存在一个问题,但是没有人知道如何使Terraform意识到这些标签或如何以健壮的方式使它们被后续计划忽略?

3 个答案:

答案 0 :(得分:0)

只需在调用模块时添加标签,请注意在https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/1.41.0的示例中该标签显示了标签,并且在文档中显示了“要添加到所有资源的标签图”,因此您可以将其添加到那张地图。

答案 1 :(得分:0)

所以最终我们选择完全不使用terraform来部署集群, 相反,我们使用eksctl来自Weaveworks的基于社区的工具。

https://eksctl.io/

AWS解决方案架构师建议我们在伦敦的AWS办公室接受一些培训时。

如果需要,可以将配置存储在源代码管理中。

eksctl create cluster -f cluster.yaml

由于EKS对基础设施进行了很多标记,因此状态文件不再抱怨标记,我们的生活变得更好了。

答案 2 :(得分:-1)

如果控制了模块,则可以尝试在ignore_changes块中使用lifecycle子句。像

    lifecycle {
      ignore_changes = [
        "tags"
    ]
}

使用您无法控制的模块会变得更加棘手。