From c87d257d31a63ceb4b5effa813004a94c700e5bd Mon Sep 17 00:00:00 2001 From: Waldemar Majkowski Date: Wed, 3 Jun 2026 18:35:42 +0200 Subject: [PATCH] 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 --- helm/litellm-helm/templates/deployment.yaml | 6 +++--- helm/litellm-helm/tests/deployment_tests.yaml | 17 +++++++++++++++++ helm/litellm-helm/values.yaml | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/helm/litellm-helm/templates/deployment.yaml b/helm/litellm-helm/templates/deployment.yaml index f8f7a6898ae..5c943a27755 100644 --- a/helm/litellm-helm/templates/deployment.yaml +++ b/helm/litellm-helm/templates/deployment.yaml @@ -97,7 +97,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 }} @@ -107,7 +107,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 }} @@ -117,7 +117,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 }} diff --git a/helm/litellm-helm/tests/deployment_tests.yaml b/helm/litellm-helm/tests/deployment_tests.yaml index 844ecd40a90..2f7f28a2683 100644 --- a/helm/litellm-helm/tests/deployment_tests.yaml +++ b/helm/litellm-helm/tests/deployment_tests.yaml @@ -523,3 +523,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 diff --git a/helm/litellm-helm/values.yaml b/helm/litellm-helm/values.yaml index 9466ac56864..a88f8a855d1 100644 --- a/helm/litellm-helm/values.yaml +++ b/helm/litellm-helm/values.yaml @@ -95,6 +95,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