diff --git a/examples/self_managed_node_group/main.tf b/examples/self_managed_node_group/main.tf
index eb256555d5..bcb4e7cc48 100644
--- a/examples/self_managed_node_group/main.tf
+++ b/examples/self_managed_node_group/main.tf
@@ -97,6 +97,12 @@ module "eks" {
self_managed_node_group_defaults = {
create_security_group = false
+
+ # enable discovery of autoscaling groups by cluster-autoscaler
+ autoscaling_group_tags = {
+ "k8s.io/cluster-autoscaler/enabled" : true,
+ "k8s.io/cluster-autoscaler/${local.name}" : "owned",
+ }
}
self_managed_node_groups = {
diff --git a/modules/self-managed-node-group/README.md b/modules/self-managed-node-group/README.md
index 7c03d9abd7..36bc98eefe 100644
--- a/modules/self-managed-node-group/README.md
+++ b/modules/self-managed-node-group/README.md
@@ -77,6 +77,7 @@ module "self_managed_node_group" {
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [ami\_id](#input\_ami\_id) | The AMI from which to launch the instance | `string` | `""` | no |
+| [autoscaling\_group\_tags](#input\_autoscaling\_group\_tags) | A map of additional tags to add to the autoscaling group created. Tags are applied to the autoscaling group only and are NOT propagated to instances | `map(string)` | `{}` | no |
| [availability\_zones](#input\_availability\_zones) | A list of one or more availability zones for the group. Used for EC2-Classic and default subnets when not specified with `subnet_ids` argument. Conflicts with `subnet_ids` | `list(string)` | `null` | no |
| [block\_device\_mappings](#input\_block\_device\_mappings) | Specify volumes to attach to the instance besides the volumes specified by the AMI | `any` | `{}` | no |
| [bootstrap\_extra\_args](#input\_bootstrap\_extra\_args) | Additional arguments passed to the bootstrap script. When `platform` = `bottlerocket`; these are additional [settings](https://github.com/bottlerocket-os/bottlerocket#settings) that are provided to the Bottlerocket user data | `string` | `""` | no |
diff --git a/modules/self-managed-node-group/main.tf b/modules/self-managed-node-group/main.tf
index 3b59e09299..909910ff05 100644
--- a/modules/self-managed-node-group/main.tf
+++ b/modules/self-managed-node-group/main.tf
@@ -400,6 +400,16 @@ resource "aws_autoscaling_group" "this" {
}
}
+ dynamic "tag" {
+ for_each = var.autoscaling_group_tags
+
+ content {
+ key = tag.key
+ value = tag.value
+ propagate_at_launch = false
+ }
+ }
+
timeouts {
delete = var.delete_timeout
}
diff --git a/modules/self-managed-node-group/variables.tf b/modules/self-managed-node-group/variables.tf
index 7351038d54..d3fcd726c2 100644
--- a/modules/self-managed-node-group/variables.tf
+++ b/modules/self-managed-node-group/variables.tf
@@ -464,6 +464,12 @@ variable "use_default_tags" {
default = false
}
+variable "autoscaling_group_tags" {
+ description = "A map of additional tags to add to the autoscaling group created. Tags are applied to the autoscaling group only and are NOT propagated to instances"
+ type = map(string)
+ default = {}
+}
+
################################################################################
# Autoscaling group schedule
################################################################################
diff --git a/node_groups.tf b/node_groups.tf
index dba8329919..1996befa28 100644
--- a/node_groups.tf
+++ b/node_groups.tf
@@ -387,8 +387,9 @@ module "self_managed_node_group" {
create_schedule = try(each.value.create_schedule, var.self_managed_node_group_defaults.create_schedule, false)
schedules = try(each.value.schedules, var.self_managed_node_group_defaults.schedules, null)
- delete_timeout = try(each.value.delete_timeout, var.self_managed_node_group_defaults.delete_timeout, null)
- use_default_tags = try(each.value.use_default_tags, var.self_managed_node_group_defaults.use_default_tags, false)
+ delete_timeout = try(each.value.delete_timeout, var.self_managed_node_group_defaults.delete_timeout, null)
+ use_default_tags = try(each.value.use_default_tags, var.self_managed_node_group_defaults.use_default_tags, false)
+ autoscaling_group_tags = try(each.value.autoscaling_group_tags, var.self_managed_node_group_defaults.autoscaling_group_tags, {})
# User data
platform = try(each.value.platform, var.self_managed_node_group_defaults.platform, "linux")