Skip to content

Commit 1747a33

Browse files
authored
fix: Cherry pick chart change v0.33.x (#7297)
1 parent 7e8585e commit 1747a33

File tree

9 files changed

+134
-75
lines changed

9 files changed

+134
-75
lines changed

.github/actions/e2e/install-karpenter/action.yaml

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -49,35 +49,15 @@ runs:
4949
logout: true
5050
- name: install-karpenter
5151
shell: bash
52+
env:
53+
ECR_ACCOUNT_ID: ${{ inputs.ecr_account_id }}
54+
ECR_REGION: ${{ inputs.ecr_region }}
55+
ACCOUNT_ID: ${{ inputs.account_id }}
56+
CLUSTER_NAME: ${{ inputs.cluster_name }}
57+
K8S_VERSION: ${{ inputs.k8s_version }}
58+
WEBHOOKS_ENABLED: ${{ inputs.webhooks_enabled }}
5259
run: |
53-
aws eks update-kubeconfig --name "${{ inputs.cluster_name }}"
54-
55-
# Parse minor version to determine whether to enable the webhooks
56-
VERSION=${{ inputs.k8s_version }}
57-
RELEASE_VERSION_MINOR="${VERSION#*.}"
58-
59-
helm upgrade --install karpenter oci://${{ inputs.ecr_account_id }}.dkr.ecr.${{ inputs.ecr_region }}.amazonaws.com/karpenter/snapshot/karpenter \
60-
-n kube-system \
61-
--version "v0-$(git rev-parse HEAD)" \
62-
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"="arn:aws:iam::${{ inputs.account_id }}:role/karpenter-irsa-${{ inputs.cluster_name }}" \
63-
--set webhook.enabled=${{ inputs.webhooks_enabled }} \
64-
--set settings.clusterName="${{ inputs.cluster_name }}" \
65-
--set settings.interruptionQueue="${{ inputs.cluster_name }}" \
66-
--set controller.resources.requests.cpu=3 \
67-
--set controller.resources.requests.memory=3Gi \
68-
--set controller.resources.limits.cpu=3 \
69-
--set controller.resources.limits.memory=3Gi \
70-
--set serviceMonitor.enabled=true \
71-
--set serviceMonitor.additionalLabels.scrape=enabled \
72-
--set "serviceMonitor.endpointConfig.relabelings[0].targetLabel=clusterName" \
73-
--set "serviceMonitor.endpointConfig.relabelings[0].replacement=${{ inputs.cluster_name }}" \
74-
--set "serviceMonitor.endpointConfig.relabelings[1].targetLabel=gitRef" \
75-
--set "serviceMonitor.endpointConfig.relabelings[1].replacement=$(git rev-parse HEAD)" \
76-
--set "serviceMonitor.endpointConfig.relabelings[2].targetLabel=mostRecentTag" \
77-
--set "serviceMonitor.endpointConfig.relabelings[2].replacement=$(git describe --abbrev=0 --tags)" \
78-
--set "serviceMonitor.endpointConfig.relabelings[3].targetLabel=commitsAfterTag" \
79-
--set "serviceMonitor.endpointConfig.relabelings[3].replacement=\"$(git describe --tags | cut -d '-' -f 2)\"" \
80-
--wait
60+
./test/hack/e2e_scripts/install_karpenter.sh
8161
- name: diff-karpenter
8262
shell: bash
8363
run: |

charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ spec:
1919
singular: ec2nodeclass
2020
scope: Cluster
2121
versions:
22+
{{- if .Values.webhook.enabled }}
2223
- additionalPrinterColumns:
2324
- jsonPath: .status.conditions[?(@.type=="Ready")].status
2425
name: Ready
@@ -735,6 +736,7 @@ spec:
735736
storage: false
736737
subresources:
737738
status: {}
739+
{{- end }}
738740
- name: v1beta1
739741
schema:
740742
openAPIV3Schema:

charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ spec:
1616
singular: nodeclaim
1717
scope: Cluster
1818
versions:
19+
{{- if .Values.webhook.enabled }}
1920
- additionalPrinterColumns:
2021
- jsonPath: .metadata.labels.node\.kubernetes\.io/instance-type
2122
name: Type
@@ -379,6 +380,7 @@ spec:
379380
storage: false
380381
subresources:
381382
status: {}
383+
{{- end }}
382384
- additionalPrinterColumns:
383385
- jsonPath: .metadata.labels.node\.kubernetes\.io/instance-type
384386
name: Type

charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ spec:
1616
singular: nodepool
1717
scope: Cluster
1818
versions:
19+
{{- if .Values.webhook.enabled }}
1920
- additionalPrinterColumns:
2021
- jsonPath: .spec.template.spec.nodeClassRef.name
2122
name: NodeClass
@@ -502,6 +503,7 @@ spec:
502503
storage: false
503504
subresources:
504505
status: {}
506+
{{- end }}
505507
- additionalPrinterColumns:
506508
- jsonPath: .spec.template.spec.nodeClassRef.name
507509
name: NodeClass

hack/mutation/conversion_webhook_injection.sh

Lines changed: 5 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,54 +6,12 @@ yq eval '.spec.conversion = {"strategy": "Webhook", "webhook": {"conversionRevie
66
yq eval '.spec.conversion = {"strategy": "Webhook", "webhook": {"conversionReviewVersions": ["v1beta1", "v1"], "clientConfig": {"service": {"name": "karpenter", "namespace": "kube-system", "port": 8443}}}}' -i pkg/apis/crds/karpenter.sh_nodepools.yaml
77

88
# Update to the karpenter-crd charts
9-
10-
# Remove the copied over conversion stanzas from CRD spec
9+
# Remove the copied conversion stanzas from CRD specs
1110
yq eval 'del(.spec.conversion)' -i charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml
1211
yq eval 'del(.spec.conversion)' -i charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml
1312
yq eval 'del(.spec.conversion)' -i charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml
1413

15-
# Add the conversion stanza template to the CRD spec to enable conversion via webhook
16-
echo "{{- if .Values.webhook.enabled }}
17-
conversion:
18-
strategy: Webhook
19-
webhook:
20-
conversionReviewVersions:
21-
- v1beta1
22-
- v1
23-
clientConfig:
24-
service:
25-
name: {{ .Values.webhook.serviceName }}
26-
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
27-
port: {{ .Values.webhook.port }}
28-
{{- end }}
29-
" >> charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml
30-
31-
echo "{{- if .Values.webhook.enabled }}
32-
conversion:
33-
strategy: Webhook
34-
webhook:
35-
conversionReviewVersions:
36-
- v1beta1
37-
- v1
38-
clientConfig:
39-
service:
40-
name: {{ .Values.webhook.serviceName }}
41-
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
42-
port: {{ .Values.webhook.port }}
43-
{{- end }}
44-
" >> charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml
45-
46-
echo "{{- if .Values.webhook.enabled }}
47-
conversion:
48-
strategy: Webhook
49-
webhook:
50-
conversionReviewVersions:
51-
- v1beta1
52-
- v1
53-
clientConfig:
54-
service:
55-
name: {{ .Values.webhook.serviceName }}
56-
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
57-
port: {{ .Values.webhook.port }}
58-
{{- end }}
59-
" >> charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml
14+
# Template the v1 version and the conversion strategy of the spec
15+
hack/mutation/ec2nodeclasses.sh
16+
hack/mutation/nodepools.sh
17+
hack/mutation/nodeclaims.sh

hack/mutation/ec2nodeclasses.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
VERSION_START="$(cat charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml | yq '.spec.versions.[0] | line')"
4+
VERSION_END="$(cat charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml | yq '.spec.versions.[1] | line')"
5+
VERSION_END=$(($VERSION_END+1))
6+
TEMP=$(mktemp)
7+
8+
cat charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml | awk -v n=$VERSION_START 'NR==n {sub(/$/,"\n{{- if .Values.webhook.enabled }}")} 1' \
9+
| awk -v n=$VERSION_END 'NR==n {sub(/$/,"\n{{- end }}")} 1' > $TEMP
10+
11+
cat $TEMP > charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml
12+
13+
echo "{{- if .Values.webhook.enabled }}
14+
conversion:
15+
strategy: Webhook
16+
webhook:
17+
conversionReviewVersions:
18+
- v1beta1
19+
- v1
20+
clientConfig:
21+
service:
22+
name: {{ .Values.webhook.serviceName }}
23+
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
24+
port: {{ .Values.webhook.port }}
25+
{{- end }}
26+
" >> charts/karpenter-crd/templates/karpenter.k8s.aws_ec2nodeclasses.yaml

hack/mutation/nodeclaims.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
VERSION_START="$(cat charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml | yq '.spec.versions.[0] | line')"
4+
VERSION_END="$(cat charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml | yq '.spec.versions.[1] | line')"
5+
VERSION_END=$(($VERSION_END+1))
6+
TEMP=$(mktemp)
7+
8+
cat charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml | awk -v n=$VERSION_START 'NR==n {sub(/$/,"\n{{- if .Values.webhook.enabled }}")} 1' \
9+
| awk -v n=$VERSION_END 'NR==n {sub(/$/,"\n{{- end }}")} 1' > $TEMP
10+
11+
cat $TEMP > charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml
12+
13+
echo "{{- if .Values.webhook.enabled }}
14+
conversion:
15+
strategy: Webhook
16+
webhook:
17+
conversionReviewVersions:
18+
- v1beta1
19+
- v1
20+
clientConfig:
21+
service:
22+
name: {{ .Values.webhook.serviceName }}
23+
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
24+
port: {{ .Values.webhook.port }}
25+
{{- end }}
26+
" >> charts/karpenter-crd/templates/karpenter.sh_nodeclaims.yaml

hack/mutation/nodepools.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
VERSION_START="$(cat charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml | yq '.spec.versions.[0] | line')"
4+
VERSION_END="$(cat charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml | yq '.spec.versions.[1] | line')"
5+
VERSION_END=$(($VERSION_END+1))
6+
TEMP=$(mktemp)
7+
8+
cat charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml | awk -v n=$VERSION_START 'NR==n {sub(/$/,"\n{{- if .Values.webhook.enabled }}")} 1' \
9+
| awk -v n=$VERSION_END 'NR==n {sub(/$/,"\n{{- end }}")} 1' > $TEMP
10+
11+
cat $TEMP > charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml
12+
13+
echo "{{- if .Values.webhook.enabled }}
14+
conversion:
15+
strategy: Webhook
16+
webhook:
17+
conversionReviewVersions:
18+
- v1beta1
19+
- v1
20+
clientConfig:
21+
service:
22+
name: {{ .Values.webhook.serviceName }}
23+
namespace: {{ .Values.webhook.serviceNamespace | default .Release.Namespace }}
24+
port: {{ .Values.webhook.port }}
25+
{{- end }}
26+
" >> charts/karpenter-crd/templates/karpenter.sh_nodepools.yaml
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
aws eks update-kubeconfig --name "$CLUSTER_NAME"
2+
3+
# First, conditionally install the webhook stanza and CRDs
4+
if (( "$WEBHOOKS_ENABLED" == false )); then
5+
helm upgrade --install karpenter-crd oci://$ECR_ACCOUNT_ID.dkr.ecr.$ECR_REGION.amazonaws.com/karpenter/snapshot/karpenter-crd \
6+
--namespace kube-system \
7+
--version "0-$(git rev-parse HEAD)" \
8+
--set webhook.enabled=${WEBHOOKS_ENABLED} \
9+
--wait
10+
fi
11+
12+
CHART="oci://$ECR_ACCOUNT_ID.dkr.ecr.$ECR_REGION.amazonaws.com/karpenter/snapshot/karpenter"
13+
ADDITIONAL_FLAGS=""
14+
15+
# Remove service account annotation when dropping support for 1.23
16+
helm upgrade --install karpenter "${CHART}" \
17+
-n kube-system \
18+
--version "v0-$(git rev-parse HEAD)" \
19+
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"="arn:aws:iam::$ACCOUNT_ID:role/karpenter-irsa-$CLUSTER_NAME" \
20+
--set webhook.enabled=${WEBHOOKS_ENABLED} \
21+
--set settings.clusterName="$CLUSTER_NAME" \
22+
--set settings.interruptionQueue="$CLUSTER_NAME" \
23+
--set controller.resources.requests.cpu=3 \
24+
--set controller.resources.requests.memory=3Gi \
25+
--set controller.resources.limits.cpu=3 \
26+
--set controller.resources.limits.memory=3Gi \
27+
--set serviceMonitor.enabled=true \
28+
--set serviceMonitor.additionalLabels.scrape=enabled \
29+
--set "serviceMonitor.endpointConfig.relabelings[0].targetLabel=clusterName" \
30+
--set "serviceMonitor.endpointConfig.relabelings[0].replacement=$CLUSTER_NAME" \
31+
--set "serviceMonitor.endpointConfig.relabelings[1].targetLabel=gitRef" \
32+
--set "serviceMonitor.endpointConfig.relabelings[1].replacement=$(git rev-parse HEAD)" \
33+
--set "serviceMonitor.endpointConfig.relabelings[2].targetLabel=mostRecentTag" \
34+
--set "serviceMonitor.endpointConfig.relabelings[2].replacement=$(git describe --abbrev=0 --tags)" \
35+
--set "serviceMonitor.endpointConfig.relabelings[3].targetLabel=commitsAfterTag" \
36+
--set "serviceMonitor.endpointConfig.relabelings[3].replacement=\"$(git describe --tags | cut -d '-' -f 2)\"" \
37+
--wait

0 commit comments

Comments
 (0)