|
@@ -0,0 +1,130 @@
|
|
|
|
|
+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
|
|
|
|
|
+}
|