From 177c770c30cf20c862742368e148634a0302805d Mon Sep 17 00:00:00 2001 From: Kyle Schochenmaier Date: Tue, 19 Dec 2023 14:24:23 -0600 Subject: [PATCH] Truncate pre-delete-controller Job name to 63 characters (#506) * truncate pre-delete controller job name to 63 chars --- CHANGELOG.md | 5 +++++ chart/templates/deployment.yaml | 10 ++++++++-- test/unit/deployment.bats | 28 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06e5446e1..9757b692b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## Unreleased + +Fix: +* Helm: rename and truncate the pre-delete cleanup job to 63 characters: [GH-506](https://github.com/hashicorp/vault-secrets-operator/pull/501) + ## 0.4.2 (December 7th, 2023) Fix: diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index 92b61c75e..f1effb1e3 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -147,7 +147,10 @@ spec: apiVersion: batch/v1 kind: Job metadata: - name: {{ include "vso.chart.fullname" . }}-pre-delete-controller-cleanup + # This name is truncated because kubernetes applies labels to the job which contain the job and pod + # name, and labels are limited to 63 characters. If we do not truncate the user will not have any + # feedback until after runtime. + name: {{ printf "%s-%s" "pdcc" (include "vso.chart.fullname" .) | trunc 63 | trimSuffix "-" }} namespace: {{ .Release.Namespace }} labels: {{- include "vso.chart.labels" . | nindent 4 }} @@ -159,7 +162,10 @@ metadata: spec: template: metadata: - name: {{ include "vso.chart.fullname" . }}-pre-delete-controller-cleanup + # This name is truncated because kubernetes applies labels to the job which contain the job and pod + # name, and labels are limited to 63 characters. If we do not truncate the user will not have any + # feedback until after runtime. + name: {{ printf "%s-%s" "pdcc" (include "vso.chart.fullname" .) | trunc 63 | trimSuffix "-" }} spec: serviceAccountName: {{ include "vso.chart.fullname" . }}-controller-manager securityContext: diff --git a/test/unit/deployment.bats b/test/unit/deployment.bats index 0ae43e037..d2ec37725 100755 --- a/test/unit/deployment.bats +++ b/test/unit/deployment.bats @@ -691,3 +691,31 @@ load _helpers local actual=$(echo "$object" | yq '.[4]' | tee /dev/stderr) [ "${actual}" = "--bar=qux" ] } + + +#-------------------------------------------------------------------- +# pre-delete-controller + +@test "controller/Deployment: pre-delete-controller Job name is not truncated by default" { + cd `chart_dir` + local object=$(helm template \ + -s templates/deployment.yaml \ + . | tee /dev/stderr | + yq 'select(.kind == "Job") | .metadata' | tee /dev/stderr) + + local actual=$(echo "$object" | yq '.name' | tee /dev/stderr) + [ "${actual}" = "pdcc-release-name-vault-secrets-operator" ] +} + +@test "controller/Deployment: pre-delete-controller Job name is truncated to 63 characters" { + cd `chart_dir` + local object=$(helm template \ + -s templates/deployment.yaml \ + --set fullnameOverride=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz \ + . | tee /dev/stderr | + yq 'select(.kind == "Job") | .metadata' | tee /dev/stderr) + + local actual=$(echo "$object" | yq '.name' | tee /dev/stderr) + [ "${actual}" = "pdcc-abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef" ] + [ "${#actual}" -eq 63 ] +} \ No newline at end of file