Skip to main content
Self-managed node groups give you complete control over the EC2 instances that join your EKS cluster. Unlike EKS managed node groups, the entire Auto Scaling Group lifecycle — including AMI selection, bootstrap configuration, and instance replacement — is your responsibility. Refer to the AWS self-managed nodes documentation for service-level details.

How it works

The self-managed-node-group submodule creates:
  • An EC2 launch template
  • An Auto Scaling Group (ASG) using that launch template
  • An IAM instance profile and role for the nodes
  • An EKS access entry so nodes can join the cluster
  • A security group for the node group
By default, the module uses the latest AWS EKS Optimized AMI for the given Kubernetes version and AMI type.

Basic configuration

Examples

Auto Scaling Group configuration

The module creates an Auto Scaling Group with a rolling instance refresh strategy by default:
You can override any ASG-level settings at the node group level:

Mixed instances policy

For cost optimization using a blend of On-Demand and Spot instances, enable use_mixed_instances_policy:

Launch template options

The module creates a launch template for each self-managed node group. All standard EC2 launch template options are exposed as variables:

Bootstrap user data

For AL2023 nodes, user data is configured using cloud-init multi-part documents with nodeadm:

IAM and access entry

The module creates an IAM instance profile, an IAM role with the required EKS node policies, and an EKS access entry (create_access_entry = true by default). The access entry allows the node role to join the cluster without configuring the aws-auth ConfigMap. To use an existing IAM role:

Key variables reference