Prepare durable isolated Vergabe pilot deployment and recovery

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
tegwick 2026-09-11 16:35:14 +02:00
parent eff457ef52
commit 959eba637f
11 changed files with 408 additions and 9 deletions

View file

@ -21,8 +21,34 @@ app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{- define "vergabe.image" -}}
{{- if .Values.image.digest -}}
{{- if not (regexMatch "^sha256:[a-f0-9]{64}$" .Values.image.digest) -}}
{{- fail "image.digest must be a sha256 OCI digest" -}}
{{- end -}}
{{- printf "%s@%s" .Values.image.repository .Values.image.digest -}}
{{- else -}}
{{- if not .Values.image.tag -}}
{{- fail "image.tag is required — pin it in helm/vergabe-teilnahme-values.yaml" -}}
{{- end -}}
{{- printf "%s:%s" .Values.image.repository .Values.image.tag -}}
{{- end -}}
{{- end -}}
{{- define "vergabe.validatePilot" -}}
{{- if .Values.pilot.enabled -}}
{{- if ne (int .Values.replicaCount) 1 -}}
{{- fail "invited pilot requires exactly one application replica" -}}
{{- end -}}
{{- if or (not .Values.persistence.media.enabled) (not .Values.persistence.appState.enabled) -}}
{{- fail "invited pilot requires persistent media and appState" -}}
{{- end -}}
{{- if not .Values.image.digest -}}
{{- fail "invited pilot requires an immutable image.digest" -}}
{{- end -}}
{{- $mediaClaim := default (printf "%s-media" (include "vergabe.fullname" .)) .Values.persistence.media.existingClaim -}}
{{- $stateClaim := default (printf "%s-app-state" (include "vergabe.fullname" .)) .Values.persistence.appState.existingClaim -}}
{{- if eq $mediaClaim $stateClaim -}}
{{- fail "media and appState must use distinct claims; operational state must not be downloadable" -}}
{{- end -}}
{{- end -}}
{{- end -}}