EKS Addons Management¶
This module manages AWS EKS native addons through Terraform. It handles the lifecycle of EKS-managed addons such as CoreDNS, kube-proxy, VPC CNI, and EBS CSI Driver.
Overview¶
The module creates and manages EKS addons using the AWS EKS Addon API. These are AWS-managed Kubernetes components that are essential for cluster operation. This module is typically called after cluster creation and Karpenter setup to avoid dependency issues.
Usage¶
module "eks_addons" {
source = "./modules/eks-addons"
cluster_name = module.eks.cluster_id
kubernetes_version = var.kubernetes_version
cluster_addons = {
coredns = {
addon_version = "v1.11.1-eksbuild.4"
service_account_role_arn = module.eks.eks_managed_node_groups["core"].iam_role_arn
}
kube-proxy = {
addon_version = "v1.29.0-eksbuild.1"
}
vpc-cni = {
addon_version = "v1.16.0-eksbuild.1"
service_account_role_arn = module.vpc_cni_irsa.iam_role_arn
configuration_values = jsonencode({
env = {
ENABLE_PREFIX_DELEGATION = "true"
WARM_PREFIX_TARGET = "1"
}
})
}
aws-ebs-csi-driver = {
addon_version = "v1.28.0-eksbuild.1"
service_account_role_arn = module.ebs_csi_driver_irsa.iam_role_arn
}
}
tags = var.tags
}
Inputs¶
Name | Description | Type | Default | Required |
---|---|---|---|---|
cluster_name |
The name of the EKS cluster | string |
n/a | yes |
kubernetes_version |
Kubernetes version to use for the EKS cluster | string |
n/a | yes |
cluster_addons |
Map of cluster addon configurations | map(object) |
{} |
no |
cluster_addons_timeouts |
Default timeout values for addon resources | object |
{} |
no |
tags |
A map of tags to apply to all resources | map(string) |
{} |
no |
Outputs¶
Name | Description |
---|---|
addons |
Map of installed EKS addon attributes |
Addon Configuration¶
Each addon in the cluster_addons
map supports the following configuration:
create
- Whether to create the addon (default:true
)name
- Addon name (defaults to map key)addon_version
- Version of the addon to installconfiguration_values
- JSON encoded configuration valuesmost_recent
- Use the most recent version (default:true
)preserve
- Preserve addon on delete (default:false
)resolve_conflicts_on_create
- How to resolve conflicts on create (default:"OVERWRITE"
)resolve_conflicts_on_update
- How to resolve conflicts on update (default:"OVERWRITE"
)service_account_role_arn
- IAM role ARN for the addon's service accountpod_identity_association
- Pod identity associations for the addontimeouts
- Timeout configuration for create/update/delete operationstags
- Additional tags for the addon