Skip to content

Commit 8b89ba1

Browse files
authored
fix: adding tags to auto scaling groups (PSCLOUD-3) (#415)
1 parent 1936403 commit 8b89ba1

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

locals.tf

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ locals {
130130
launch_template_name = "${local.cluster_name}-default-lt"
131131
launch_template_use_name_prefix = true
132132
launch_template_tags = { Name = "${local.cluster_name}-default" }
133-
tags = var.autoscaling_enabled ? merge(local.tags, { "k8s.io/cluster-autoscaler/${local.cluster_name}" = "owned", propagate_at_launch = true }, { "k8s.io/cluster-autoscaler/enabled" = "true", propagate_at_launch = true }) : local.tags
134133
135134
# Node Pool IAM Configuration
136135
iam_role_use_name_prefix = false
@@ -181,7 +180,6 @@ locals {
181180
launch_template_name = "${local.cluster_name}-${key}-lt"
182181
launch_template_use_name_prefix = true
183182
launch_template_tags = { Name = "${local.cluster_name}-${key}" }
184-
tags = var.autoscaling_enabled ? merge(local.tags, { "k8s.io/cluster-autoscaler/${local.cluster_name}" = "owned", propagate_at_launch = true }, { "k8s.io/cluster-autoscaler/enabled" = "true", propagate_at_launch = true }) : local.tags
185183
# Node Pool IAM Configuration
186184
iam_role_use_name_prefix = false
187185
iam_role_name = "${var.prefix}-${key}-eks-node-group"
@@ -224,4 +222,24 @@ locals {
224222
}
225223
} : {}
226224
225+
# Used while tagging the EKS created ASGs with our user specified set of tags
226+
node_group_names = keys(local.node_groups)
227+
# Merge user tags with autoscaler tags when autoscaling is enabled
228+
all_node_group_tags = var.autoscaling_enabled ? merge(
229+
local.tags,
230+
{
231+
"k8s.io/cluster-autoscaler/${local.cluster_name}" = "owned"
232+
"k8s.io/cluster-autoscaler/enabled" = "true"
233+
}
234+
) : local.tags
235+
node_group_tags = flatten([
236+
for ng_name in local.node_group_names : [
237+
for tag_key, tag_value in local.all_node_group_tags : {
238+
node_group = ng_name
239+
key = tag_key
240+
value = tag_value
241+
}
242+
]
243+
])
244+
227245
}

main.tf

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,35 @@ module "eks" {
183183
# BYO - EKS Workers IAM Role
184184
create_iam_role = var.workers_iam_role_arn == null ? true : false
185185
iam_role_arn = var.workers_iam_role_arn
186+
187+
# Tags to propagate to node groups and their Auto Scaling Groups
188+
tags = local.tags
186189
}
187190

188191
## Any individual Node Group customizations should go here
189192
eks_managed_node_groups = local.node_groups # Node group definitions (from locals)
190193
}
191194

195+
# Tag the EKS created ASGs - ensures tags are explicitly applied to AutoScalingGroups
196+
# This is more reliable than relying solely on EKS module propagation
197+
resource "aws_autoscaling_group_tag" "node_group_tags" {
198+
# The for_each loop results in one resource created per node group per tag
199+
for_each = {
200+
for item in local.node_group_tags :
201+
"${item.node_group}-${item.key}" => item
202+
}
203+
# Reference the single ASG for this node group
204+
autoscaling_group_name = module.eks.eks_managed_node_groups[each.value.node_group].node_group_autoscaling_group_names[0]
205+
206+
tag {
207+
key = each.value.key
208+
value = each.value.value
209+
propagate_at_launch = true
210+
}
211+
212+
depends_on = [module.eks]
213+
}
214+
192215
# Resource to create EKS access entries for admin IAM roles. Used for EKS RBAC.
193216
resource "aws_eks_access_entry" "instance" {
194217
for_each = toset(coalesce(var.admin_access_entry_role_arns, []))

0 commit comments

Comments
 (0)