Skip to content

Commit

Permalink
Added functionality to loop over different node pools
Browse files Browse the repository at this point in the history
Signed-off-by: Abhishek Dubey <[email protected]>
  • Loading branch information
iamabhishek-dubey committed Dec 30, 2024
1 parent 1f6aca8 commit 8f2be32
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 137 deletions.
68 changes: 68 additions & 0 deletions charts/karpenter/templates/node-pool.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{{- range .Values.nodePools }}
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: {{ .name }}
spec:
template:
metadata:
labels:
{{- if .labels }}
{{- range $key, $value := .labels }}
{{ $key }}: {{ $value }}
{{- end }}
{{- else }}
{} # Empty labels object if no labels are defined
{{- end }}
annotations:
{{- if .annotations }}
{{- range $key, $value := .annotations }}
{{ $key }}: {{ $value }}
{{- end }}
{{- else }}
{} # Empty annotations object if no annotations are defined
{{- end }}
spec:
requirements:
{{- if .requirements | len }}
{{- range .requirements }}
- key: {{ .key }}
operator: {{ .operator }}
values:
{{ toYaml .values | indent 12 }}
{{- if .minValues }}
minValues: {{ .minValues }}
{{- end }}
{{- end }}
{{- else }}
[] # In case requirements is empty, an empty array will be passed
{{- end }}

taints:
{{- if .taints }}
{{- range .taints }}
- key: {{ .key }}
{{- if .value }}
value: {{ .value }}
{{- end }}
effect: {{ .effect }}
{{- end }}
{{- else }}
[] # Empty taints array if no taints are defined
{{- end }}
nodeClassRef:
group: {{ .nodeClass.group | default "karpenter.k8s.aws" }}
kind: {{ .nodeClass.kind | default "EC2NodeClass" }}
name: {{ .nodeClass.name }}
expireAfter: {{ .expireAfter | default "720h" }}
limits:
{{- if .limits.cpu }}
cpu: {{ .limits.cpu }}
{{- end }}
{{- if .limits.memory }}
memory: {{ .limits.memory }}
{{- end }}
disruption:
consolidationPolicy: {{ .disruption.consolidationPolicy | default "WhenEmptyOrUnderutilized" }}
consolidateAfter: {{ .disruption.consolidateAfter | default "1m" }}
{{- end }}
72 changes: 0 additions & 72 deletions charts/karpenter/templates/nodePool.yaml

This file was deleted.

129 changes: 64 additions & 65 deletions charts/karpenter/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,68 +23,67 @@ karpenter:

# Node Pool Configuration
nodePools:
name: default
requirements:
- key: kubernetes.io/arch
operator: In
values:
- "amd64"
- key: kubernetes.io/os
operator: In
values:
- "linux"
- key: karpenter.sh/capacity-type
operator: In
values:
- "on-demand"
- key: karpenter.k8s.aws/instance-category
operator: In
values:
- "t"
- "m"
- "r"
minValues: 2
- key: karpenter.k8s.aws/instance-family
operator: Exists
minValues: 5
- key: karpenter.k8s.aws/instance-family
operator: In
values:
- "m5"
- "m5d"
- "c5"
- "c5d"
- "c4"
- "r4"
minValues: 3
- key: node.kubernetes.io/instance-type
operator: Exists
minValues: 10
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values:
- "2"

nodeClass:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default
expireAfter: 720h
limits:
cpu: "1000"
memory: "1000Gi"
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 1m
taints:
- key: "example.com/special-taint"
value: "my-value"
effect: "NoSchedule"
- key: "example.com/another-taint"
effect: "NoExecute"
labels:
billing-team: my-team
environment: production
annotations:
example.com/owner: "my-team"
example.com/maintainer: "[email protected]"
- name: default
expireAfter: 720h
labels:
billing-team: my-team
environment: production
annotations:
example.com/owner: "my-team"
example.com/maintainer: "[email protected]"
limits:
cpu: "1000"
memory: "1000Gi"
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 1m
nodeClass:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default
taints:
- key: "example.com/special-taint"
value: "my-value"
effect: "NoSchedule"
- key: "example.com/another-taint"
effect: "NoExecute"
requirements:
- key: kubernetes.io/arch
operator: In
values:
- "amd64"
- key: kubernetes.io/os
operator: In
values:
- "linux"
- key: karpenter.sh/capacity-type
operator: In
values:
- "on-demand"
- key: karpenter.k8s.aws/instance-category
operator: In
values:
- "t"
- "m"
- "r"
minValues: 2
- key: karpenter.k8s.aws/instance-family
operator: Exists
minValues: 5
- key: karpenter.k8s.aws/instance-family
operator: In
values:
- "m5"
- "m5d"
- "c5"
- "c5d"
- "c4"
- "r4"
minValues: 3
- key: node.kubernetes.io/instance-type
operator: Exists
minValues: 10
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values:
- "2"

0 comments on commit 8f2be32

Please sign in to comment.