Releases: terraform-aws-modules/terraform-aws-eks
Releases · terraform-aws-modules/terraform-aws-eks
v21.0.5
v21.0.4
v21.0.3
v21.0.2
v21.0.1
v21.0.0
21.0.0 (2025-07-23)
⚠ BREAKING CHANGES
- Upgrade min AWS provider and Terraform versions to 
6.0and1.5.7respectively (#3412) 
List of backwards incompatible changes
See the UPGRADE-21.0.md for further details.
- Terraform 
v1.5.7is now minimum supported version - AWS provider 
v6.0.0is now minimum supported version - TLS provider 
v4.0.0is now minimum supported version - The 
aws-authsub-module has been removed. Users who wish to utilize its functionality can continue to do so by specifying av20.xversion, or~> v20.0version constraint in their module source. bootstrap_self_managed_addonsis now hardcoded tofalse. This is a legacy setting and instead users should utilize the EKS addons API, which is what this module does by default. In conjunction with this change, thebootstrap_self_managed_addonsis now ignored by the module to aid in upgrading without disruption (otherwise it would require cluster re-creation).- When enabling 
enable_efa_supportor creating placement groups within a node group, users must now specify the correctsubnet_ids; the module no longer tries to automatically select a suitable subnet. - EKS managed node group:
- IMDS now default to a hop limit of 1 (previously was 2)
 ami_typenow defaults toAL2023_x86_64_STANDARDenable_monitoringis now set tofalseby defaultenable_efa_onlyis now set totrueby defaultuse_latest_ami_release_versionis now set totrueby default- Support for autoscaling group schedules has been removed
 
 - Self-managed node group:
- IMDS now default to a hop limit of 1 (previously was 2)
 ami_typenow defaults toAL2023_x86_64_STANDARDenable_monitoringis now set tofalseby defaultenable_efa_onlyis now set totrueby default- Support for autoscaling group schedules has been removed
 
 - Karpenter:
- Native support for IAM roles for service accounts (IRSA) has been removed; EKS Pod Identity is now enabled by default
 - Karpenter controller policy for prior to Karpenter 
v1have been removed (i.e.v0.33); thev1policy is now used by default create_pod_identity_associationis now set totrueby default
 addons.resolve_conflicts_on_createis now set to"NONE"by default (was"OVERWRITE").addons.most_recentis now set totrueby default (wasfalse).cluster_identity_providers.issuer_urlis now required to be set by users; the prior incorrect default has been removed. See #3055 and kubernetes/kubernetes#123561 for more details.- The OIDC issuer URL for IAM roles for service accounts (IRSA) has been changed to use the new dual stack
oidc-eksendpoint instead ofoidc.eks. This is to align with aws/containers-roadmap#2038 (comment) 
Additional changes
Added
- Support for 
regionparameter to specify the AWS region for the resources created if different from the provider region. - Both the EKS managed and self-managed node groups now support creating their own security groups (again). This is primarily motivated by the changes for EFA support; previously users would need to specify 
enable_efa_supportboth at the cluster level (to add the appropriate security group rules to the shared node security group) as well as the node group level. However, its not always desirable to have these rules across ALL node groups when they are really only required on the node group where EFA is utilized. And similarly for other use cases, users can create custom rules for a specific node group instead of apply across ALL node groups. 
Modified
- Variable definitions now contain detailed 
objecttypes in place of the previously used any type. - The embedded KMS key module definition has been updated to 
v4.0to support the same version requirements as well as the newregionargument. 
Variable and output changes
- 
Removed variables:
enable_efa_support- users only need to set this within the node group configuration, as the module no longer manages EFA support at the cluster level.enable_security_groups_for_pods- users can instead attach thearn:aws:iam::aws:policy/AmazonEKSVPCResourceControllerpolicy viaiam_role_additional_policiesif using security groups for pods.eks-managed-node-groupsub-modulecluster_service_ipv4_cidr- users should usecluster_service_cidrinstead (for either IPv4 or IPv6).elastic_gpu_specificationselastic_inference_acceleratorplatform- this is superseded byami_typeplacement_group_strategy- set toclusterby the moduleplacement_group_az- users will need to specify the correct subnet insubnet_idscreate_scheduleschedules
self-managed-node-groupsub-moduleelastic_gpu_specificationselastic_inference_acceleratorplatform- this is superseded byami_typecreate_scheduleschedulesplacement_group_az- users will need to specify the correct subnet insubnet_idshibernation_options- not valid in EKSmin_elb_capacity- not valid in EKSwait_for_elb_capacity- not valid in EKSwait_for_capacity_timeout- not valid in EKSdefault_cooldown- not valid in EKStarget_group_arns- not valid in EKSservice_linked_role_arn- not valid in EKSwarm_pool- not valid in EKS
fargate-profilesub-module- None
 
karpentersub-moduleenable_v1_permissions- v1 permissions are now the defaultenable_irsairsa_oidc_provider_arnirsa_namespace_service_accountsirsa_assume_role_condition_test
 - 
Renamed variables:
- Variables prefixed with 
cluster_*have been stripped of the prefix to better match the underlying API:cluster_name->namecluster_version->kubernetes_versioncluster_enabled_log_types->enabled_log_typescluster_force_update_version->force_update_versioncluster_compute_config->compute_configcluster_upgrade_policy->upgrade_policycluster_remote_network_config->remote_network_configcluster_zonal_shift_config->zonal_shift_configcluster_additional_security_group_ids->additional_security_group_idscluster_endpoint_private_access->endpoint_private_accesscluster_endpoint_public_access->endpoint_public_accesscluster_endpoint_public_access_cidrs->endpoint_public_access_cidrscluster_ip_family->ip_familycluster_service_ipv4_cidr->service_ipv4_cidrcluster_service_ipv6_cidr->service_ipv6_cidrcluster_encryption_config->encryption_configcreate_cluster_primary_security_group_tags->create_primary_security_group_tagscluster_timeouts->timeoutscreate_cluster_security_group->create_security_groupcluster_security_group_id->security_group_idcluster_security_group_name->security_group_namecluster_security_group_use_name_prefix->security_group_use_name_prefixcluster_security_group_description->security_group_descriptioncluster_security_group_additional_rules->security_group_additional_rulescluster_security_group_tags->security_group_tagscluster_encryption_policy_use_name_prefix->encryption_policy_use_name_prefixcluster_encryption_policy_name->encryption_policy_namecluster_encryption_policy_description->encryption_policy_descriptioncluster_encryption_policy_path->encryption_policy_pathcluster_encryption_policy_tags->encryption_policy_tagscluster_addons->addonscluster_addons_timeouts->addons_timeoutscluster_identity_providers->identity_providers
 eks-managed-node-groupsub-modulecluster_version->kubernetes_version
self-managed-node-groupsub-modulecluster_version->kubernetes_versiondelete_timeout->timeouts
fargate-profilesub-module- None
 
karpentersub-module- None
 
 - Variables prefixed with 
 - 
Added variables:
regioneks-managed-node-groupsub-moduleregionpartition- added to reduce number ofGETrequests from data sources when possibleaccount_id- added to reduce number ofGETrequests from data sources when possiblecreate_security_groupsecurity_group_namesecurity_group_use_name_prefixsecurity_group_descriptionsecurity_group_ingress_rulessecurity_group_egress_rulessecurity_group_tags
self-managed-node-groupsub-moduleregionpartition- added to reduce number ofGETrequests from data sources when possibleaccount_id- added to reduce number ofGETrequests from data sources when possiblecreate_security_groupsecurity_group_namesecurity_group_use_name_prefixsecurity_group_descriptionsecurity_group_ingress_rulessecurity_group_egress_rules...