############################################################################### # EKS ############################################################################### module "eks" { source = "terraform-aws-modules/eks/aws" version = "~> 20.31" cluster_name = local.name cluster_version = var.kubernetes_version cluster_endpoint_public_access = var.cluster_endpoint_public_access cluster_endpoint_public_access_cidrs = var.cluster_endpoint_public_access_cidrs # Give the identity running `terraform apply` cluster-admin, so that # `aws eks update-kubeconfig` immediately works. enable_cluster_creator_admin_permissions = true vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnets cluster_addons = { coredns = {} kube-proxy = {} vpc-cni = {} eks-pod-identity-agent = {} aws-ebs-csi-driver = { service_account_role_arn = module.ebs_csi_irsa.iam_role_arn } } eks_managed_node_groups = { default = { instance_types = var.node_instance_types capacity_type = "ON_DEMAND" min_size = var.node_min_size max_size = var.node_max_size desired_size = var.node_desired_size disk_size = var.node_disk_size } } tags = local.tags } ############################################################################### # EBS CSI driver # # Kerberos Hub's supporting components (RabbitMQ, VerneMQ, MinIO, ...) claim # persistent volumes, so the cluster needs a working CSI driver. ############################################################################### module "ebs_csi_irsa" { source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks" version = "~> 5.44" role_name = "${local.name}-ebs-csi" attach_ebs_csi_policy = true oidc_providers = { main = { provider_arn = module.eks.oidc_provider_arn namespace_service_accounts = ["kube-system:ebs-csi-controller-sa"] } } tags = local.tags }