fix(helm): upper-case probe scheme to tolerate lowercase input

Pipe the probe scheme through `| upper` so values like `https` or
`Http` render as valid Kubernetes httpGet.scheme values instead of
being rejected by the API server at apply time. No-op for already
upper-case values. Adds a helm-unittest case for lowercase input.

Addresses Greptile review feedback on #29596.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Waldemar Majkowski 2026-06-03 18:35:42 +02:00
parent dc10bf84b8
commit cb00ea341c
3 changed files with 21 additions and 3 deletions

View file

@ -183,7 +183,7 @@ spec:
httpGet:
path: {{ .Values.livenessProbe.path | quote }}
port: "http"
scheme: {{ .Values.livenessProbe.scheme | default "HTTP" }}
scheme: {{ .Values.livenessProbe.scheme | default "HTTP" | upper }}
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
@ -193,7 +193,7 @@ spec:
httpGet:
path: {{ .Values.readinessProbe.path | quote }}
port: "http"
scheme: {{ .Values.readinessProbe.scheme | default "HTTP" }}
scheme: {{ .Values.readinessProbe.scheme | default "HTTP" | upper }}
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
@ -203,7 +203,7 @@ spec:
httpGet:
path: {{ .Values.startupProbe.path | quote }}
port: "http"
scheme: {{ .Values.startupProbe.scheme | default "HTTP" }}
scheme: {{ .Values.startupProbe.scheme | default "HTTP" | upper }}
initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.startupProbe.periodSeconds }}
timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }}

View file

@ -433,3 +433,20 @@ tests:
- equal:
path: spec.template.spec.containers[0].startupProbe.httpGet.scheme
value: HTTPS
- it: should upper-case a lowercase probe scheme
template: deployment.yaml
set:
image.tag: test
livenessProbe.scheme: https
readinessProbe.scheme: https
startupProbe.scheme: https
asserts:
- equal:
path: spec.template.spec.containers[0].livenessProbe.httpGet.scheme
value: HTTPS
- equal:
path: spec.template.spec.containers[0].readinessProbe.httpGet.scheme
value: HTTPS
- equal:
path: spec.template.spec.containers[0].startupProbe.httpGet.scheme
value: HTTPS

View file

@ -94,6 +94,7 @@ livenessProbe:
# Scheme for the probe request: HTTP (default) or HTTPS. Set to HTTPS when the
# proxy terminates TLS on the container port (ssl_keyfile_path/ssl_certfile_path),
# otherwise the kubelet's plain-HTTP probe fails the TLS handshake.
# Case-insensitive — the value is upper-cased before rendering.
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 15