resource "aws_eks_cluster" "this" { name = var.name role_arn = aws_iam_role.cluster.arn version = var.kubernetes_version access_config { authentication_mode = "API_AND_CONFIG_MAP" bootstrap_cluster_creator_admin_permissions = true } vpc_config { endpoint_private_access = var.cluster_endpoint_private_access endpoint_public_access = var.cluster_endpoint_public_access public_access_cidrs = var.cluster_public_access_cidrs subnet_ids = local.private_subnet_ids } depends_on = [ aws_iam_role_policy_attachment.cluster_policy ] tags = local.common_tags } resource "aws_eks_node_group" "default" { cluster_name = aws_eks_cluster.this.name node_group_name = "${var.name}-default" node_role_arn = aws_iam_role.node.arn subnet_ids = local.private_subnet_ids version = var.kubernetes_version disk_size = var.node_disk_size capacity_type = var.node_capacity_type instance_types = var.node_instance_types scaling_config { desired_size = var.node_desired_size min_size = var.node_min_size max_size = var.node_max_size } update_config { max_unavailable = 1 } depends_on = [ aws_iam_role_policy_attachment.node_worker_policy, aws_iam_role_policy_attachment.node_cni_policy, aws_iam_role_policy_attachment.node_ecr_policy ] tags = local.common_tags } resource "aws_eks_access_entry" "cluster_admins" { for_each = toset(var.cluster_admin_principal_arns) cluster_name = aws_eks_cluster.this.name principal_arn = each.value type = "STANDARD" tags = local.common_tags } resource "aws_eks_access_policy_association" "cluster_admins" { for_each = aws_eks_access_entry.cluster_admins cluster_name = aws_eks_cluster.this.name principal_arn = each.value.principal_arn policy_arn = "arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy" access_scope { type = "cluster" } } resource "aws_eks_access_entry" "node_role" { cluster_name = aws_eks_cluster.this.name principal_arn = aws_iam_role.node.arn type = "EC2_LINUX" tags = local.common_tags } resource "aws_eks_addon" "coredns" { cluster_name = aws_eks_cluster.this.name addon_name = "coredns" addon_version = var.coredns_addon_version resolve_conflicts_on_create = "OVERWRITE" resolve_conflicts_on_update = "OVERWRITE" depends_on = [aws_eks_node_group.default] tags = local.common_tags } resource "aws_eks_addon" "kube_proxy" { cluster_name = aws_eks_cluster.this.name addon_name = "kube-proxy" addon_version = var.kube_proxy_addon_version resolve_conflicts_on_create = "OVERWRITE" resolve_conflicts_on_update = "OVERWRITE" depends_on = [aws_eks_node_group.default] tags = local.common_tags } resource "aws_eks_addon" "vpc_cni" { cluster_name = aws_eks_cluster.this.name addon_name = "vpc-cni" addon_version = var.vpc_cni_addon_version resolve_conflicts_on_create = "OVERWRITE" resolve_conflicts_on_update = "OVERWRITE" depends_on = [aws_eks_node_group.default] tags = local.common_tags } resource "aws_eks_addon" "pod_identity_agent" { cluster_name = aws_eks_cluster.this.name addon_name = "eks-pod-identity-agent" addon_version = var.pod_identity_agent_addon_version resolve_conflicts_on_create = "OVERWRITE" resolve_conflicts_on_update = "OVERWRITE" depends_on = [aws_eks_node_group.default] tags = local.common_tags }