resource "aws_kms_key" "eks" { description = "EKS Secret Encryption Key" deletion_window_in_days = 7 enable_key_rotation = true tags = local.tags } module "eks" { source = "terraform-aws-modules/eks/aws" version = "~> 18.28.0" vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.public_subnets cluster_name = local.cluster_name cluster_version = var.eks_cluster_version cluster_endpoint_private_access = true cluster_endpoint_public_access = true create_cloudwatch_log_group = false enable_irsa = true cluster_addons = { coredns = { resolve_conflicts = "OVERWRITE" addon_version = "v1.8.7-eksbuild.1" } kube-proxy = { resolve_conflicts = "OVERWRITE" addon_version = "v1.22.11-eksbuild.2" } vpc-cni = { resolve_conflicts = "OVERWRITE" addon_version = "v1.11.3-eksbuild.1" } } cluster_encryption_config = [{ provider_key_arn = aws_kms_key.eks.arn resources = ["secrets"] }] eks_managed_node_group_defaults = { ami_type = "AL2_x86_64" disk_size = var.eks_node_disk_size instance_types = var.eks_node_instance_types subnet_ids = module.vpc.private_subnets } eks_managed_node_groups = { default = { # By default, the module creates a launch template to ensure tags are propagated to instances, etc., # so we need to disable it to use the default template provided by the AWS EKS managed node group service create_launch_template = false launch_template_name = "" min_size = var.eks_node_group_min_size max_size = var.eks_node_group_max_size desired_size = var.eks_node_group_desired_size } } manage_aws_auth_configmap = true aws_auth_users = var.aws_auth_users tags = local.tags }