Terraform module for deploying an AWS EKS cluster in Auto Mode with fully managed compute
| Name | Version |
|---|---|
| aws | >= 6.0.0 |
| kubernetes | 2.36.0 |
| tls | 4.0.6 |
No providers.
| Name | Source | Version |
|---|---|---|
| addons | ./modules/addons | n/a |
| cluster | ./modules/cluster | n/a |
| container_insights | ./modules/container_insights | n/a |
| ebs_csi_controller | ./modules/ebs_csi_controller | n/a |
| namespaces | ./modules/namespaces | n/a |
No resources.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| apps | n/a | list(object({ |
[] |
no |
| cluster_enabled_log_types | List of enabled cluster log types | list(string) |
[] |
no |
| cluster_name | Name of the EKS cluster | string |
n/a | yes |
| cluster_node_pools | Node pools for EKS Auto Mode (valid: general-purpose, system) | list(string) |
[ |
no |
| cluster_upgrade_policy | Upgrade policy for EKS cluster | object({ |
{} |
no |
| cluster_version | EKS Kubernetes version | string |
"latest" |
no |
| cluster_vpc_config | VPC configuration for EKS | object({ |
n/a | yes |
| cluster_zonal_shift_config | Zonal shift configuration | object({ |
{} |
no |
| create_security_group | Whether to create an internal security group for EKS | bool |
true |
no |
| ebs_csi_controller_sa_name | The name of the Kubernetes ServiceAccount used by the EBS CSI driver | string |
"ebs-csi-controller-sa" |
no |
| ebs_csi_driver_chart_version | Helm chart version to use for AWS EBS CSI Driver. Use 'latest' or null to always get the latest chart version. | string |
"latest" |
no |
| eks_addons | List of EKS add-ons to install with optional configurations | list(object({ |
[] |
no |
| eks_log_prevent_destroy | Whether to prevent the destruction of the CloudWatch log group | bool |
true |
no |
| eks_log_retention_days | The number of days to retain logs for the EKS in CloudWatch | number |
30 |
no |
| eks_view_access | Configuration for assigning view access to EKS cluster | object({ |
{ |
no |
| enable_aws_load_balancer_controller | Enable AWS Load Balancer Controller with IAM role and RBAC | bool |
false |
no |
| enable_cluster_encryption | Enable encryption for Kubernetes secrets using a KMS key | bool |
false |
no |
| enable_container_insights | Whether to enable CloudWatch logging for EKS workloads (e.g., Fluent Bit, Fargate logs) | bool |
false |
no |
| enable_ebs_csi_controller | Enable the AWS EBS CSI Controller. If true, deploys the Helm release and sets up required IAM roles and policies. | bool |
false |
no |
| enable_elastic_load_balancing | Enable or disable Elastic Load Balancing for EKS Auto Mode | bool |
true |
no |
| enable_oidc | Enable IAM Roles for Service Accounts (IRSA) support by creating the OIDC provider for the EKS cluster. | bool |
true |
no |
| enable_prometheus | Enable Prometheus monitoring with StatefulSet, persistent storage, and LoadBalancer service | bool |
false |
no |
| fluentbit_namespace | The Kubernetes namespace where Fluent Bit is deployed. Use 'aws-observability' for EKS Auto Mode or 'amazon-cloudwatch' for standard EKS. | string |
"aws-observability" |
no |
| fluentbit_sa_name | The name of the Kubernetes service account used by Fluent Bit. This is used to associate the IAM role via IRSA. | string |
"fluent-bit" |
no |
| helm_charts | List of Helm releases to deploy | list(object({ |
[] |
no |
| namespaces | List of Kubernetes namespaces to create | list(string) |
[] |
no |
| prometheus_chart_version | Version of the Prometheus Helm chart | string |
"25.8.0" |
no |
| prometheus_namespace | Kubernetes namespace for Prometheus | string |
"monitoring" |
no |
| prometheus_replicas | The number of Prometheus replicas to deploy | number |
1 |
no |
| prometheus_resources | The resource requests and limits for Prometheus | object({ |
{ |
no |
| prometheus_retention_time | The number of days to retain metrics in Prometheus | string |
"15d" |
no |
| prometheus_service_annotations | The annotations for the Prometheus service | map(string) |
{ |
no |
| prometheus_service_type | The type of Kubernetes service for Prometheus | string |
"LoadBalancer" |
no |
| prometheus_storage_class | The storage class for the Prometheus persistent volume | string |
"gp2" |
no |
| prometheus_storage_size | The size of the persistent volume for Prometheus data | string |
"10Gi" |
no |
| prometheus_version | Prometheus version. Use 'latest' or null to always get the latest version. | string |
"latest" |
no |
| tags | A map of tags to use on all resources | map(string) |
{} |
no |
| timeouts | Timeouts for EKS cluster creation, update, and deletion | object({ |
{} |
no |
| vpc_id | VPC ID where the EKS cluster will be deployed | string |
n/a | yes |
| Name | Description |
|---|---|
| cluster_version | The Kubernetes version used by the EKS cluster, if exported by the module. |
| eks_cluster_auth_token | Authentication token for the EKS cluster (used by kubectl and SDKs) |
| eks_cluster_ca_cert | The base64-decoded certificate authority data for the EKS cluster |
| eks_cluster_endpoint | The endpoint URL of the EKS cluster |
| oidc_provider_arn | ARN of the OIDC provider for IRSA |
| oidc_provider_url | URL of the OIDC provider for IRSA |