Skip to content

Commit 7a3c39d

Browse files
Benbentwoclaude
andcommitted
feat: update examples/complete with Auto Mode support
Add auto_mode_enabled variable, Auto Mode node IAM role, and pass auto_mode_compute_config/storage_config/elastic_load_balancing to the module. Disable node group when Auto Mode is enabled. Incorporates example patterns from PR #253 using our variable naming. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8518b52 commit 7a3c39d

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

examples/complete/main.tf

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,28 @@ module "eks_cluster" {
111111
cluster_encryption_config_resources = var.cluster_encryption_config_resources
112112

113113
addons = local.addons
114-
addons_depends_on = [module.eks_node_group]
114+
addons_depends_on = var.auto_mode_enabled ? null : [module.eks_node_group]
115115
bootstrap_self_managed_addons_enabled = var.bootstrap_self_managed_addons_enabled
116116
upgrade_policy = var.upgrade_policy
117117
zonal_shift_config = var.zonal_shift_config
118118

119+
# EKS Auto Mode
120+
auto_mode_compute_config = {
121+
enabled = var.auto_mode_enabled
122+
node_pools = var.auto_mode_enabled ? ["general-purpose", "system"] : []
123+
node_role_arn = var.auto_mode_enabled ? one(aws_iam_role.auto_mode_node[*].arn) : null
124+
}
125+
126+
auto_mode_storage_config = {
127+
block_storage = {
128+
enabled = var.auto_mode_enabled
129+
}
130+
}
131+
132+
auto_mode_elastic_load_balancing = {
133+
enabled = var.auto_mode_enabled
134+
}
135+
119136
access_entry_map = local.access_entry_map
120137
access_config = {
121138
authentication_mode = "API"
@@ -136,10 +153,49 @@ module "eks_cluster" {
136153
cluster_depends_on = [module.subnets]
137154
}
138155

156+
# Auto Mode node role (only when auto_mode_enabled = true)
157+
data "aws_iam_policy_document" "auto_mode_node_assume_role" {
158+
count = local.enabled && var.auto_mode_enabled ? 1 : 0
159+
160+
statement {
161+
effect = "Allow"
162+
actions = ["sts:AssumeRole"]
163+
164+
principals {
165+
type = "Service"
166+
identifiers = ["ec2.amazonaws.com"]
167+
}
168+
}
169+
}
170+
171+
resource "aws_iam_role" "auto_mode_node" {
172+
count = local.enabled && var.auto_mode_enabled ? 1 : 0
173+
174+
name = "${module.label.id}-auto-mode-node"
175+
assume_role_policy = one(data.aws_iam_policy_document.auto_mode_node_assume_role[*].json)
176+
tags = module.label.tags
177+
}
178+
179+
resource "aws_iam_role_policy_attachment" "auto_mode_node_minimal" {
180+
count = local.enabled && var.auto_mode_enabled ? 1 : 0
181+
182+
role = one(aws_iam_role.auto_mode_node[*].name)
183+
policy_arn = "arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy"
184+
}
185+
186+
resource "aws_iam_role_policy_attachment" "auto_mode_node_ecr" {
187+
count = local.enabled && var.auto_mode_enabled ? 1 : 0
188+
189+
role = one(aws_iam_role.auto_mode_node[*].name)
190+
policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly"
191+
}
192+
139193
module "eks_node_group" {
140194
source = "cloudposse/eks-node-group/aws"
141195
version = "3.2.0"
142196

197+
enabled = !var.auto_mode_enabled
198+
143199
# node group <= 3.2 requires a non-empty list of subnet_ids, even when disabled
144200
subnet_ids = local.enabled ? module.subnets.public_subnet_ids : ["filler_string_for_enabled_is_false"]
145201
cluster_name = module.eks_cluster.eks_cluster_id

examples/complete/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ variable "private_ipv6_enabled" {
142142
description = "Whether to use IPv6 addresses for the pods in the node group"
143143
}
144144

145+
variable "auto_mode_enabled" {
146+
type = bool
147+
default = false
148+
description = "Set to true to enable EKS Auto Mode"
149+
}
150+
145151
variable "remote_network_config" {
146152
description = "Configuration block for the cluster remote network configuration"
147153
type = object({

0 commit comments

Comments
 (0)