如何命名配备terraform的eks worker节点?

时间:2020-08-09 15:51:33

标签: tags terraform eks

我正在使用terraform 12.20.0,并且已为EKS群集配置了2个节点组。

如何根据其节点组名称为EKS节点工作者添加名称标签?

我尝试在每个节点组的其他标签部分中添加“名称”标签,但这些标签没有使用,并且我的EC2实例名称为空,同时出现了其他标签。

这里是配置-我跳过了不太相关的部分:

module "eks-cluster" {
...
  node_groups_defaults = {
    disk_size = 128
    key_name  = var.key_name
    subnets = [
      aws_subnet.{{}}.id,
      aws_subnet.{{}}.id,
    ]
    k8s_labels = {
      env = var.environment
    }

    additional_tags = {
      env                                             = var.environment
      "k8s.io/cluster-autoscaler/enabled"             = "true"
      "k8s.io/cluster-autoscaler/${var.cluster-name}" = "true"
    }
  }

  node_groups = {
    app = {
      name = "app"

      .....

      k8s_labels = {
        nodegroup = "app"
      }
      additional_tags = {
        nodegroup = "app"
        Name      = "${var.environment}-app-node"
      }
    }
    ml = {
      name = "ml"

     ...
      instance_type = "m5.xlarge"
      k8s_labels = {
        nodegroup = "ml"
      }
      additional_tags = {
        nodegroup = "ml"
        Name      = "${var.environment}-ml-node"
      }
    }
  }

  tags = {
    env = var.environment
  }

  map_roles = [{
    ......
  }]
}

2 个答案:

答案 0 :(得分:1)

根据documentation资源:aws_eks_node_group不允许修改实例上的标签。

EKS节点组即将推出一项不错的功能,它将允许您传递自定义的userdata脚本。使用它,您将能够以编程方式修改实例的标签。可以跟踪问题-> https://github.com/aws/containers-roadmap/issues/596

更新: 从20/08/2020起,您现在可以将launch_template与节点组一起使用。这将允许您传递Name标记。示例:

resource "aws_launch_template" "cluster" {
  image_id               = data.aws_ssm_parameter.cluster.value
  instance_type          = "t3.medium"
  name                   = "eks-launch-template-test"
  update_default_version = true

  tag_specifications {
    resource_type = "instance"

    tags = {
      Name                        = "eks-node-group-instance-name"
    }
  }
} 

答案 1 :(得分:0)

我刚刚注意到

"k8s.io/cluster-autoscaler/${var.cluster-name}" = "owned"

可能需要

text-align: left