Skip to content

Commit c1e5bb3

Browse files
committed
update karpenter.tf
1 parent 4063c62 commit c1e5bb3

File tree

2 files changed

+54
-22
lines changed

2 files changed

+54
-22
lines changed

karpenter.tf

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8279
apiVersion: karpenter.k8s.aws/v1
8380
kind: EC2NodeClass
8481
metadata:
8582
name: default
8683
spec:
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 }
113108
EOT
114-
}
115109

116110
depends_on = [
117111
aws_eks_cluster.cluster,
118112
helm_release.karpenter_crd,
119113
helm_release.karpenter
120114
]
121-
}
115+
}

variables.tf

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,3 +461,41 @@ variable "s3_csi_bucket_names" {
461461
default = [""]
462462
}
463463

464+
variable "karpenter_metadata_options" {
465+
description = "Metadata options for the EC2NodeClass"
466+
default = {
467+
httpEndpoint = "enabled"
468+
httpProtocolIPv6 = "disabled"
469+
httpPutResponseHopLimit = 1
470+
httpTokens = "optional"
471+
}
472+
}
473+
474+
variable "karpenter_block_device_mappings" {
475+
description = "Block device mappings for the EC2NodeClass"
476+
default = [
477+
{
478+
deviceName = "/dev/xvda"
479+
ebs = {
480+
volumeSize = "20Gi"
481+
volumeType = "gp3"
482+
encrypted = true
483+
}
484+
},
485+
{
486+
deviceName = "/dev/xvdb"
487+
ebs = {
488+
volumeSize = "50Gi"
489+
volumeType = "gp3"
490+
encrypted = true
491+
}
492+
}
493+
]
494+
}
495+
496+
variable "karpenter_ami_selector_terms" {
497+
description = "AMI selector terms for the EC2NodeClass"
498+
default = [
499+
{ alias = "bottlerocket@latest" }
500+
]
501+
}

0 commit comments

Comments
 (0)