我创建VPC和添加标签的子网。
稍后,我创建EKS集群,它会附加自己的标签,如果我再次apply
,标签就会被覆盖。
我需要任何方法来读取当前标记,然后与我的自定义标记合并。问题是,如果VPC资源是第一次创建,我无法查询是否存在某些标签。
这是我的子网定义
resource "aws_subnet" "k8s" {
count = "${var.create_vpc && length(var.k8s_subnets) > 0 ? length(var.k8s_subnets) : 0}"
vpc_id = "${local.vpc_id}"
cidr_block = "${var.k8s_subnets[count.index]}"
availability_zone = "${element(var.azs, count.index)}"
tags = "${merge(map("Name", format("subnet-%s-${var.k8s_subnet_suffix}-%s", var.name, element(var.azs, count.index))), var.tags, var.k8s_subnet_tags)}"
}
这是EKS添加的标签:
kubernetes.io/cluster/eks-cluster : shared
我被这种。。。先来的是鸡肉还是鸡蛋?有什么想法或建议吗?
--已编辑
像self.tags这样的东西可能是解决方案,但不幸的是不可能:
self。ATTRIBUTE语法仅在提供程序中允许且有效。
并显示错误:
Error: resource 'aws_subnet.k8s' config: cannot contain self-reference self.tags
这就是我所做的:
- 我在env.sh中定义了封装terraform的公共标签
- 当创建另一个组件时,我会这样做:tags="${merge(var.default_tags,map("Name",format("%s-Jenkins-ELB",var.env((}">
- 您可以将VPC标记写入SSM参数存储,然后检索它们供EKS集群使用