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"
}
]
}
}
}
๋ ธ๋๊ฐ ํ๋ก๋น์ ๋ ๋ ์ ์๋ ๋ฐฉ์
โ ๋ ธ๋ ํ์ ์ ๋ฐ๋ผ ์ ๋ ฅ์ ๋ฐ์์ผ ํ ใ ์งโฆ.
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๊ณผ ๋์ผ ๋ชจ๋ ์์ ์กด์ฌ)