๐Ÿ”ฅ ์ฃผ์ œ

Untitled

๐Ÿ˜Š ๋‚ด์šฉ

VPC(๊ธฐ์กด๊ฑฐ)

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "4.0.1"

  name = var.vpc_name
  cidr = var.vpc_cidr

  azs                  = var.vpc_azs
  private_subnets      = var.vpc_privatesubnet
  public_subnets       = var.vpc_publicsubnet
  enable_dns_hostnames = true
  enable_dns_support   = true

  enable_nat_gateway = true
  single_nat_gateway = false
}

eks

module "eks" {
	source = "terraform-aws-modules/eks/aws"
	version = "~>19.0"
	
	cluster_name = var.eks_name
	cluster_version = var.eks_version
	
	cluster_endpoint_private_access = true
	cluster_endpoint_public_access  = true

	cluster_addons = {
    coredns = {
      most_recent = true
			resolve_conflicts = "OVERWRITE"
    }
    kube-proxy = {}
		vpc-cni = {
			resolve_conflicts = "OVERWRITE"
		}
  }

	vpc_id = module.vpc.vpc_id
	subnet_ids = var.eks_subnet_type == "privatesubnet" ? [for i in range(var.eks_subnet_count[0], var.eks_subnet_count[1]) : module.vpc.private_subnets[i]] : [for i in range(var.eks_subnet_count[0], var.eks_subnet_count[1]) : module.vpc.public_subnets[i]]
	control_plane_subnet_ids = ???  

	cloudwatch_log_group_retention_in_days = 1

	//Self Managed Node Group(s)
	self_managed_node_group_defaults = {
		instance_type = var.eks_instance_type  (string)
		//update_launch_template_default_version = true
		iam_role_additional_policies = {
			???
		}
	}
	self_managed_node_groups = {
		one = {
			name = var.eks_nodegroup_name
			max_size = var.eks_max_size
			desired_size = var.eks_desired_size

			use_mixed_instances_policy = true
			mixed_instances_policy = {
				instances_distribution = {
					on_demand_base_capacity = var
					on_demand_percentage_above_base_capacity = var
					spot_allocation_strategy = "capacity-optimized"
			}
			override = [
				{
					instance_type = var.eks_instance_type1
					weighted_capacity = var.eks_weighted_capaicty1 (string)
				},
				{
					instance_type = var.eks_instance_type2
					weighted_capacity = var.eks_weighted_capacity2 (string)
				},
			]
		}
	}
					
	//EKS Managed Node Group(s)
	eks_managed_node_group_defaults = {
		ami_type = var.eks_ami_type
		disk_size = var.eks_disk_size
		instance_types = var.eks_instance_types = list(string)
  }
	
	eks_managed_node_groups = {
		blue = {}
    green = {
      min_size     = var.eks_min_size
      max_size     = var.eks_max_size
      desired_size = var.eks_desired_size 

      instance_types = [var.eks_instance_types]
			capacity_type = "SPOT"  //or "ON_DEMAND" 
    }
	}

	//Fargate Profile(s) 
	fargate_profiles = {
		default = {
			name = "default"
			selectors = [
				{
					namespace = "kube-system"
				},
				{
					namespace = "default"
				}
			]
		}
	}
}

๋…ธ๋“œ๊ฐ€ ํ”„๋กœ๋น„์ €๋‹ ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹

โ‡’ ๋…ธ๋“œ ํƒ€์ž…์— ๋”ฐ๋ผ ์ž…๋ ฅ์„ ๋ฐ›์•„์•ผ ํ• ใ…ˆ์ง€โ€ฆ.

EKS

Control๊ณผ Worker๋กœ ๋ถ„๋ฆฌ

Control_plane

module "eks_control_plane" {
	source = "terraform-aws-modules/eks/aws"
	version = "~>19.0"
	
	cluster_name = "${var.eks_control_name}"
	cluster_version = var.eks_version (string)
	
	cluster_endpoint_public_access = true

	cluster_addons = {
    coredns = {
      most_recent = true
			resolve_conflicts = "OVERWRITE"
    }
    kube-proxy = {}
		vpc-cni = {
			resolve_conflicts = "OVERWRITE"
		}
		vpc-cni = {
			most_recent = true
		}

		vpc_id = module.vpc.vpc_id (control vpc์˜ vpc๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ..)
		control_plane_subnet_ids = ???(var)(eks_control_subnets) <- parent๊ด€๊ณ„๋กœ ํŒŒ์•…
		
  }

Worker_node (์‹ค์ œ๋ก  control plane๊ณผ ๋™์ผ ๋ชจ๋“ˆ ์•ˆ์— ์กด์žฌ)