Terraform module for AWS EKS clusters
| Name | Version |
|---|---|
| terraform | >= 1.3 |
| aws | >= 6.0.0 |
| helm | >= 2.13.0 |
| kubernetes | >= 2.29.0 |
| Name | Version |
|---|---|
| aws | 6.8.0 |
| Name | Source | Version |
|---|---|---|
| access | ./modules/access | n/a |
| addons | ./modules/addons | n/a |
| cloudwatch_logs | ./modules/cloudwatch_logs | n/a |
| cluster | ./modules/cluster | n/a |
| encryption | ./modules/encryption | n/a |
| irsa | ./modules/irsa | n/a |
| namespaces | ./modules/namespaces | n/a |
| node_groups | ./modules/node_groups | n/a |
| Name | Type |
|---|---|
| aws_eks_cluster_versions.available | data source |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| access_entries | Access entries to grant. Provide a list of objects with principal and policy. | list(object({ |
[] |
no |
| cloudwatch_prevent_destroy | Whether to set lifecycle prevent_destroy on log groups | bool |
false |
no |
| cloudwatch_retention_in_days | Retention in days for CloudWatch log groups | number |
90 |
no |
| cluster_authentication_mode | EKS cluster authentication mode | string |
"API_AND_CONFIG_MAP" |
no |
| cluster_enabled_log_types | List of enabled cluster control plane log types | list(string) |
[] |
no |
| cluster_endpoint_public_access_cidrs | CIDR blocks for which EKS public endpoint is accessible | list(string) |
[ |
no |
| cluster_executor_role_arn | Optional IAM role ARN to grant cluster admin via an EKS access entry | string |
null |
no |
| cluster_name | EKS cluster name | string |
n/a | yes |
| cluster_upgrade_policy | Upgrade policy for EKS cluster | object({ |
{} |
no |
| cluster_version | EKS Kubernetes version, e.g., 1.32 | string |
n/a | yes |
| cluster_vpc_config | Optional object for full cluster VPC config | object({ |
null |
no |
| cluster_zonal_shift_config | Zonal shift configuration | object({ |
{} |
no |
| coredns_version | Optional version for CoreDNS addon | string |
null |
no |
| create | Whether to create resources. Useful for tests. | bool |
true |
no |
| create_security_group | Whether to create the cluster security group | bool |
true |
no |
| ebs_csi_version | Optional version for EBS CSI driver addon | string |
null |
no |
| efs_csi_version | Optional version for EFS CSI driver addon | string |
null |
no |
| eks_log_prevent_destroy | Alias of cloudwatch_prevent_destroy | bool |
true |
no |
| eks_log_retention_days | Alias of cloudwatch_retention_in_days | number |
90 |
no |
| enable_cloudwatch_observability | Enable CloudWatch observability features | bool |
false |
no |
| enable_cluster_encryption | Enable KMS envelope encryption for Kubernetes secrets | bool |
false |
no |
| enable_coredns | Enable CoreDNS addon | bool |
true |
no |
| enable_ebs_csi | Enable EBS CSI driver addon | bool |
false |
no |
| enable_efs_csi | Enable EFS CSI driver addon | bool |
false |
no |
| enable_irsa | Enable IRSA (OIDC provider and optional roles) | bool |
false |
no |
| enable_kube_proxy | Enable kube-proxy addon | bool |
true |
no |
| enable_oidc | Enable IAM OIDC provider (alias of enable_irsa) | bool |
false |
no |
| enable_vpc_cni | Enable VPC CNI addon | bool |
true |
no |
| encryption_kms_key_arn | Optional pre-existing KMS key ARN for EKS secret encryption | string |
null |
no |
| existing_oidc_provider_arn | If set, use this OIDC provider ARN instead of creating a new one | string |
null |
no |
| kube_proxy_version | Optional version for kube-proxy addon | string |
null |
no |
| managed_node_groups | Map of managed node group configurations | map(object({ |
{} |
no |
| namespaces | Namespaces to create. Accepts either a list of objects [{ name, labels }] or a map(name => { labels }). | any |
[] |
no |
| node_group_additional_policies | Map of additional IAM policies for node groups | map(object({ |
{} |
no |
| private_subnet_ids | List of private subnet IDs for the EKS cluster | list(string) |
null |
no |
| public_subnet_ids | Optional list of public subnet IDs (unused by default) | list(string) |
null |
no |
| self_managed_node_groups | Map of self-managed node group configurations | map(object({ |
{} |
no |
| tags | Common tags to apply to resources | map(string) |
{} |
no |
| timeouts | Timeouts for EKS cluster operations | object({ |
{} |
no |
| vpc_cni_version | Optional version for VPC CNI addon | string |
null |
no |
| vpc_id | VPC ID for the EKS cluster | string |
n/a | yes |
| Name | Description |
|---|---|
| addons_status | Status of managed addons |
| addons_versions | Versions of managed addons |
| cluster_arn | ARN of the EKS cluster |
| cluster_auth_token | Token to use for authentication with the cluster |
| cluster_ca_certificate | Base64 encoded certificate data required to communicate with the cluster |
| cluster_endpoint | Endpoint for EKS cluster |
| cluster_name | Name of the EKS cluster |
| cluster_oidc_issuer_url | OIDC issuer URL for the cluster |
| managed_node_group_arns | ARNs of managed node groups |
| managed_node_group_ids | IDs of managed node groups |
| managed_node_group_resources | Resource information for managed node groups |
| managed_node_group_role_arns | ARNs of managed node group IAM roles |
| managed_node_group_role_names | Names of managed node group IAM roles |
| self_managed_node_group_asg_names | Auto scaling group names for self-managed node groups |
| self_managed_node_group_launch_template_ids | Launch template IDs for self-managed node groups |
| self_managed_node_group_role_arns | ARNs of self-managed node group IAM roles |
| self_managed_node_group_role_names | Names of self-managed node group IAM roles |