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

Terraform创建EKS集群后,下一个计划将看到标记的子网更改,terraform,amazon-eks,Terraform,Amazon Eks,我打算使用Terraform来支持AWS中的整个监控基础设施。 到目前为止,在我的terraform项目中已经创建了VPC、子网和适当的安全组。我正在尽可能使用Terraform注册表: 我看到的问题是,在部署EKS集群后,它向VPC和子网引入了对Terraform来说似乎未知的标签。因此,下一次运行地形平面图时,它会识别它不管理的标记,并打算删除这些标记: ---------------------------------------------------------------

我打算使用Terraform来支持AWS中的整个监控基础设施。 到目前为止,在我的terraform项目中已经创建了VPC、子网和适当的安全组。我正在尽可能使用Terraform注册表:

我看到的问题是,在部署EKS集群后,它向VPC和子网引入了对Terraform来说似乎未知的标签。因此,下一次运行<代码>地形平面图时,它会识别它不管理的标记,并打算删除这些标记:

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

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.

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

a存在一个问题,但有人知道如何让Terraform意识到这些标记,或者让它们被后续计划以稳健的方式忽略吗?

如果您控制了模块,您可以尝试在
生命周期
块中使用
忽略更改
子句。差不多

    lifecycle {
      ignore_changes = [
        "tags"
    ]
}

但是,对于一个您无法控制的模块,它将变得更加棘手。

如果您控制了该模块,您可以尝试在
生命周期
块中使用
忽略更改
子句。差不多

    lifecycle {
      ignore_changes = [
        "tags"
    ]
}

对于一个你无法控制的模块来说,这将更加棘手。

只要在调用模块时添加标签,注意,在示例中它显示了标签,在文档中它说“要添加到所有资源的标签映射”,这样你就可以将其添加到该映射中。

只要在调用模块时添加标签,请注意,在示例中,它在那里显示了标记,在文档中,它说“要添加到所有资源的标记映射”,因此您可以将其添加到该映射。

因此,最终我们选择根本不使用terraform部署集群, 相反,我们使用Weaveworks提供的基于社区的工具
eksctl

当我们在伦敦的AWS办公室接受培训时,一位AWS解决方案架构师推荐了它

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

eksctl create cluster -f cluster.yaml

由于EKS对基础设施进行了大量标记,我们的生活现在好多了,州文件不再抱怨标记。

因此,最终我们选择根本不使用terraform部署集群, 相反,我们使用Weaveworks提供的基于社区的工具
eksctl

当我们在伦敦的AWS办公室接受培训时,一位AWS解决方案架构师推荐了它

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

eksctl create cluster -f cluster.yaml

由于EKS对基础设施进行了大量标记,我们的生活现在好多了,州文件没有抱怨标记。

我想到了这一点,但我不想标记所有资源,例如,我只想标记EKS激活的子网,而不是所有子网。在所有vpc资源中使用标签可能会破坏EKS的资源发现机制。请注意,您应该仅根据EKS稍后如何标记子网来标记它们。@Spangen这样说,在TerraForm中的标记中添加
kubernetes.io/cluster/monitoring:“shared”
,这些标记将应用于VPC创建的每个资源,包括所有子网。假设我有2个专用子网和2个公用子网,EKS集群仅为这两个专用子网定义,如何阻止公用子网被Terraform标记?您可以在运行EKS的VPC中专门添加标记,如果您的VPC中有不希望eks使用的子网,则不必标记这些子网。我想到了这一点,但我不想标记所有资源,例如,我只想标记eks在其中激活的子网,而不是所有子网。在所有vpc资源中使用标签可能会破坏EKS的资源发现机制。请注意,您应该仅根据EKS稍后如何标记子网来标记它们。@Spangen这样说,在TerraForm中的标记中添加
kubernetes.io/cluster/monitoring:“shared”
,这些标记将应用于VPC创建的每个资源,包括所有子网。假设我有2个专用子网和2个公用子网,EKS群集仅为这两个专用子网定义,如何阻止公用子网被Terraform标记?您可以在运行EKS的VPC中专门添加标记,如果您的VPC中有不希望EKS使用的子网,则您必须不标记这些子网。