11locals {
2- eks_worker_tags = {
3- " k8s.io/cluster-autoscaler/enabled" = " true"
4- " k8s.io/cluster-autoscaler/${local.name}" = " owned"
5- }
62
73 eks_map_roles = [
84 {
@@ -13,13 +9,14 @@ locals {
139 ]
1410}
1511
16- data "aws_ami" "eks_default_bottlerocket " {
12+ data "aws_ami" "eks_default_arm64 " {
1713 most_recent = true
1814 owners = [" amazon" ]
1915
2016 filter {
2117 name = " name"
22- values = [" bottlerocket-aws-k8s-${ var . eks_cluster_version } -x86_64-*" ]
18+ values = [" amazon-eks-arm64-node-${ var . eks_cluster_version } -v*" ]
19+
2320 }
2421}
2522
@@ -65,7 +62,10 @@ module "eks" {
6562 cluster_endpoint_private_access = var. eks_cluster_endpoint_private_access
6663 cluster_endpoint_public_access_cidrs = var. eks_cluster_endpoint_only_pritunl ? [" ${ module . pritunl [0 ]. pritunl_endpoint } /32" ] : [" 0.0.0.0/0" ]
6764
65+ node_security_group_tags = { " karpenter.sh/discovery" = local.name }
66+
6867 self_managed_node_group_defaults = {
68+ ami_id = data.aws_ami.eks_default_arm64.id
6969 block_device_mappings = {
7070 xvda = {
7171 device_name = " /dev/xvda"
@@ -78,7 +78,6 @@ module "eks" {
7878
7979 }
8080 }
81- iam_role_additional_policies = var.eks_workers_additional_policies
8281 metadata_options = {
8382 http_endpoint = " enabled"
8483 http_tokens = " required"
@@ -88,81 +87,18 @@ module "eks" {
8887 iam_role_attach_cni_policy = false
8988 }
9089 self_managed_node_groups = {
91- spot = {
92- name = " ${ local . name } -spot"
93- iam_role_name = " ${ local . name } -spot"
94- desired_size = var.node_group_spot.desired_capacity
95- max_size = var.node_group_spot.max_capacity
96- min_size = var.node_group_spot.min_capacity
97- subnet_ids = module.vpc.private_subnets
98-
99- bootstrap_extra_args = " --kubelet-extra-args '--node-labels=eks.amazonaws.com/capacityType=SPOT --node-labels=nodegroup=spot'"
100- capacity_rebalance = var.node_group_spot.capacity_rebalance
101- use_mixed_instances_policy = var.node_group_spot.use_mixed_instances_policy
102- mixed_instances_policy = var.node_group_spot.mixed_instances_policy
103-
104- tags = local.eks_worker_tags
105- },
106- ondemand = {
107- name = " ${ local . name } -ondemand"
108- iam_role_name = " ${ local . name } -ondemand"
109- desired_size = var.node_group_ondemand.desired_capacity
110- max_size = var.node_group_ondemand.max_capacity
111- min_size = var.node_group_ondemand.min_capacity
112- instance_type = var.node_group_ondemand.instance_type
113- subnet_ids = module.vpc.private_subnets
114-
115- bootstrap_extra_args = " --kubelet-extra-args '--node-labels=eks.amazonaws.com/capacityType=ON_DEMAND --node-labels=nodegroup=ondemand'"
116- capacity_rebalance = var.node_group_ondemand.capacity_rebalance
117- use_mixed_instances_policy = var.node_group_ondemand.use_mixed_instances_policy
118- mixed_instances_policy = var.node_group_ondemand.mixed_instances_policy
119-
120- tags = local.eks_worker_tags
121- },
122- ci = {
123- name = " ${ local . name } -ci"
124- iam_role_name = " ${ local . name } -ci"
125- desired_size = var.node_group_ci.desired_capacity
126- max_size = var.node_group_ci.max_capacity
127- min_size = var.node_group_ci.min_capacity
128- subnet_ids = module.vpc.private_subnets
129-
130- bootstrap_extra_args = " --kubelet-extra-args '--node-labels=eks.amazonaws.com/capacityType=SPOT --node-labels=nodegroup=ci --register-with-taints=nodegroup=ci:NoSchedule'"
131- capacity_rebalance = var.node_group_ci.capacity_rebalance
132- use_mixed_instances_policy = var.node_group_ci.use_mixed_instances_policy
133- mixed_instances_policy = var.node_group_ci.mixed_instances_policy
134-
135- tags = merge (local. eks_worker_tags , { " k8s.io/cluster-autoscaler/node-template/label/nodegroup" = " ci" })
136- },
137- bottlerocket = {
138- name = " ${ local . name } -bottlerocket"
139- iam_role_name = " ${ local . name } -bottlerocket"
140- desired_size = var.node_group_br.desired_capacity
141- max_size = var.node_group_br.max_capacity
142- min_size = var.node_group_br.min_capacity
90+ default = {
91+ name = " ${ local . name } -default"
92+ iam_role_name = " ${ local . name } -default"
93+ desired_size = var.node_group_default.desired_capacity
94+ max_size = var.node_group_default.max_capacity
95+ min_size = var.node_group_default.min_capacity
14396 subnet_ids = module.vpc.private_subnets
14497
145- platform = " bottlerocket"
146- ami_id = data.aws_ami.eks_default_bottlerocket.id
147- bootstrap_extra_args = <<- EOT
148- [settings.host-containers.admin]
149- enabled = false
150-
151- [settings.host-containers.control]
152- enabled = true
153-
154- [settings.kubernetes.node-labels]
155- "eks.amazonaws.com/capacityType" = "SPOT"
156- "nodegroup" = "bottlerocket"
157-
158- [settings.kubernetes.node-taints]
159- "nodegroup" = "bottlerocket:NoSchedule"
160- EOT
161- capacity_rebalance = var.node_group_br.capacity_rebalance
162- use_mixed_instances_policy = var.node_group_br.use_mixed_instances_policy
163- mixed_instances_policy = var.node_group_br.mixed_instances_policy
164-
165- tags = merge (local. eks_worker_tags , { " k8s.io/cluster-autoscaler/node-template/label/nodegroup" = " bottlerocket" })
98+ bootstrap_extra_args = " --kubelet-extra-args '--node-labels=nodegroup=default --register-with-taints=CriticalAddonsOnly=true:NoSchedule'"
99+ capacity_rebalance = var.node_group_default.capacity_rebalance
100+ use_mixed_instances_policy = var.node_group_default.use_mixed_instances_policy
101+ mixed_instances_policy = var.node_group_default.mixed_instances_policy
166102 }
167103 }
168104 fargate_profiles = {
0 commit comments