From 92d922806a9de268d816f1376974e530df239c7a Mon Sep 17 00:00:00 2001 From: Muhammad Bintang Bahy Date: Mon, 30 Jun 2025 13:56:39 +0700 Subject: [PATCH 1/2] feat(aws-eks-addons): add support for custom provisioners and custom application taints --- modules/aws-eks-addons/main.tf | 16 +++++++++++++--- modules/aws-eks-addons/variables.tf | 28 +++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/modules/aws-eks-addons/main.tf b/modules/aws-eks-addons/main.tf index 353616b..be2e1ef 100644 --- a/modules/aws-eks-addons/main.tf +++ b/modules/aws-eks-addons/main.tf @@ -200,7 +200,7 @@ resource "kubernetes_ingress_v1" "alb_ingress_connect_nginx_internal" { } resource "kubernetes_annotations" "alb_ingress_connect_internal_nginx_annotation" { - count = var.enable_internal_alb ? 1 : 0 + count = var.enable_internal_alb ? 1 : 0 api_version = "networking.k8s.io/v1" kind = "Ingress" force = true @@ -728,13 +728,13 @@ resource "kubectl_manifest" "karpenter_stateful_provisioner" { cpu = var.stateful_total_cpu_limit } } - taints = [ + taints = concat([ { effect = "NoSchedule" key = "workload" value = var.stateful_application_toleration_value }, - ] + ], var.stateful_application_taints) requirements : [ { key = "workload" @@ -803,6 +803,7 @@ resource "kubectl_manifest" "karpenter_stateless_provisioner" { cpu = var.stateless_total_cpu_limit } } + taints = var.stateless_application_taints requirements : [ { key = "karpenter.sh/capacity-type" @@ -841,6 +842,15 @@ resource "kubectl_manifest" "karpenter_stateless_provisioner" { ] } +resource "kubectl_manifest" "karpenter_custom_provisioner" { + count = length(var.karpenter_custom_provisioners) + yaml_body = var.karpenter_custom_provisioners[count.index] + + depends_on = [ + helm_release.karpenter[0] + ] +} + resource "kubectl_manifest" "karpenter_node_template" { count = var.deploy_karpenter && var.deploy_karpenter_crds ? 1 : 0 yaml_body = <<-YAML diff --git a/modules/aws-eks-addons/variables.tf b/modules/aws-eks-addons/variables.tf index 11d0f80..c45fb45 100644 --- a/modules/aws-eks-addons/variables.tf +++ b/modules/aws-eks-addons/variables.tf @@ -321,6 +321,26 @@ variable "stateless_windows_arch_types" { type = list(string) } +variable "stateful_application_taints" { + description = "stateful application taints for scheduling" + default = [] + type = list(object({ + key = string + value = string + effect = string + })) +} + +variable "stateless_application_taints" { + description = "stateful application taints for scheduling" + default = [] + type = list(object({ + key = string + value = string + effect = string + })) +} + variable "stateful_application_toleration_value" { description = "stateful application tolerance value for scheduling" default = "stateful-application" @@ -369,6 +389,12 @@ variable "karpenter_node_template_throughput" { type = string } +variable "karpenter_custom_provisioners" { + description = "Karpenter custom provisioners" + default = [] + type = list(string) +} + variable "enable_sso" { default = false description = "Creation control logic of AWS SSO integration at ArgoCD" @@ -493,4 +519,4 @@ variable "adot_collector_hostname" { description = "ADOT collector IAM role ARN" default = "trace.example.com" type = string -} \ No newline at end of file +} From 3e87e22cdb70d6efcb973ca5e5a30f96cd31309d Mon Sep 17 00:00:00 2001 From: Muhammad Bintang Bahy Date: Mon, 30 Jun 2025 13:58:56 +0700 Subject: [PATCH 2/2] feat: add custom node template --- modules/aws-eks-addons/main.tf | 9 +++++++++ modules/aws-eks-addons/variables.tf | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/modules/aws-eks-addons/main.tf b/modules/aws-eks-addons/main.tf index be2e1ef..f1381c7 100644 --- a/modules/aws-eks-addons/main.tf +++ b/modules/aws-eks-addons/main.tf @@ -881,6 +881,15 @@ resource "kubectl_manifest" "karpenter_node_template" { ] } +resource "kubectl_manifest" "karpenter_custom_node_template" { + count = length(var.karpenter_custom_node_templates) + yaml_body = var.karpenter_custom_node_templates[count.index] + + depends_on = [ + helm_release.karpenter[0] + ] +} + resource "kubectl_manifest" "karpenter_windows_with_aws_cni" { count = var.karpenter_windows_support ? 1 : 0 yaml_body = <