@@ -72,34 +72,28 @@ resource "helm_release" "karpenter_crd" {
7272 version = var. karpenter_version
7373}
7474
75-
76- resource "null_resource" "karpenter_ec2_node_class_apply" {
75+ resource "kubectl_manifest" "karpenter_ec2_node_class" {
7776 count = var. karpenter_enabled ? 1 : 0
7877
79- provisioner "local-exec" {
80- command = << EOT
81- cat <<EOF | kubectl apply -f -
78+ yaml_body = << EOT
8279apiVersion: karpenter.k8s.aws/v1
8380kind: EC2NodeClass
8481metadata:
8582 name: default
8683spec:
8784 metadataOptions:
88- httpEndpoint: enabled
89- httpProtocolIPv6: disabled
90- httpPutResponseHopLimit: 1
91- httpTokens: optional
85+ httpEndpoint: ${ var . karpenter_metadata_options . httpEndpoint }
86+ httpProtocolIPv6: ${ var . karpenter_metadata_options . httpProtocolIPv6 }
87+ httpPutResponseHopLimit: ${ var . karpenter_metadata_options . httpPutResponseHopLimit }
88+ httpTokens: ${ var . karpenter_metadata_options . httpTokens }
9289 blockDeviceMappings:
93- - deviceName: /dev/xvda
94- ebs:
95- volumeSize: 20Gi
96- volumeType: gp3
97- encrypted: true
98- - deviceName: /dev/xvdb
90+ %{ for mapping in var . karpenter_block_device_mappings }
91+ - deviceName: ${ mapping . deviceName }
9992 ebs:
100- volumeSize: 50Gi
101- volumeType: gp3
102- encrypted: true
93+ volumeSize: ${ mapping . ebs . volumeSize }
94+ volumeType: ${ mapping . ebs . volumeType }
95+ encrypted: ${ mapping . ebs . encrypted }
96+ %{ endfor }
10397 amiFamily: ${ var . karpenter_ami_family }
10498 role: ${ aws_iam_role . node . name }
10599 securityGroupSelectorTerms:
@@ -108,14 +102,14 @@ spec:
108102 - id: ${ aws_subnet . public [0 ]. id }
109103 - id: ${ aws_subnet . public [1 ]. id }
110104 amiSelectorTerms:
111- - alias: bottlerocket@latest
112- EOF
105+ %{ for term in var . karpenter_ami_selector_terms }
106+ - alias: ${ term . alias }
107+ %{ endfor }
113108EOT
114- }
115109
116110 depends_on = [
117111 aws_eks_cluster . cluster ,
118112 helm_release . karpenter_crd ,
119113 helm_release . karpenter
120114 ]
121- }
115+ }
0 commit comments