From fee84c7a6bdfa02cf7ded30ede4c1d1e77efda5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20Rosenl=C3=B6cher?= Date: Fri, 16 Oct 2026 17:32:21 +0200 Subject: [PATCH] chore(deploy): Overlay auf Live-Stand, Rollout-Runbook Schritte 0 und 1 (#28) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Image-Digests von backend, frontend und postgres sind die live laufenden; whisper bekommt seinen ersten CI-Digest. Die neuen CI-Digests für Schritt 3 stehen als Kommentar. - Ingress-Hosts und TLS: apicore.encry.de, apicorebackend.encry.de. - kubectl diff ohne Components zeigt nur Rollout-Strategie und startupProbe am Backend, den Digest-Pin für postgres (ein Neustart) und drei neue VOICE_*-Werte in der Backend-ConfigMap. Refs #28 Co-Authored-By: Claude Opus 5.5 (1M context) --- .../overlays/encry/configmap-frontend.yaml | 2 +- .../k8s/overlays/encry/ingress-backend.yaml | 4 +-- .../k8s/overlays/encry/ingress-frontend.yaml | 4 +-- deploy/k8s/overlays/encry/kustomization.yaml | 35 ++++++++++++------- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/deploy/k8s/overlays/encry/configmap-frontend.yaml b/deploy/k8s/overlays/encry/configmap-frontend.yaml index bc79be0..6cd086d 100644 --- a/deploy/k8s/overlays/encry/configmap-frontend.yaml +++ b/deploy/k8s/overlays/encry/configmap-frontend.yaml @@ -1,5 +1,5 @@ # Werte fuer den Cluster, Bedeutung: base/frontend/configmap.example.yaml. -# Der Host ist ein Platzhalter, Runbook Schritt 1 uebernimmt den Live-Wert. +# Live-Wert (Runbook Schritt 1). apiVersion: v1 kind: ConfigMap metadata: diff --git a/deploy/k8s/overlays/encry/ingress-backend.yaml b/deploy/k8s/overlays/encry/ingress-backend.yaml index 72f331f..6704588 100644 --- a/deploy/k8s/overlays/encry/ingress-backend.yaml +++ b/deploy/k8s/overlays/encry/ingress-backend.yaml @@ -15,10 +15,10 @@ spec: ingressClassName: traefik tls: - hosts: - - api.apicore.example.com + - apicorebackend.encry.de secretName: apicore-backend-tls rules: - - host: api.apicore.example.com + - host: apicorebackend.encry.de http: paths: - path: / diff --git a/deploy/k8s/overlays/encry/ingress-frontend.yaml b/deploy/k8s/overlays/encry/ingress-frontend.yaml index aef77a3..4a95c2a 100644 --- a/deploy/k8s/overlays/encry/ingress-frontend.yaml +++ b/deploy/k8s/overlays/encry/ingress-frontend.yaml @@ -15,10 +15,10 @@ spec: ingressClassName: traefik tls: - hosts: - - apicore.example.com + - apicore.encry.de secretName: apicore-frontend-tls rules: - - host: apicore.example.com + - host: apicore.encry.de http: paths: - path: / diff --git a/deploy/k8s/overlays/encry/kustomization.yaml b/deploy/k8s/overlays/encry/kustomization.yaml index 33b0423..ac6847b 100644 --- a/deploy/k8s/overlays/encry/kustomization.yaml +++ b/deploy/k8s/overlays/encry/kustomization.yaml @@ -3,12 +3,9 @@ # kubectl diff -k deploy/k8s/overlays/encry # was sich aendert; nach dem Rollout ist der Diff leer. # -# Gewollte Platzhalter, nie so anwenden: -# - Image-Digests sha256:000...: Runbook Schritt 0 traegt die Digests der -# CI-Builds (sha-) und von postgres:18.6-alpine ein. -# - Hosts und TLS in ingress-*.yaml: Runbook Schritt 1 uebernimmt sie aus dem -# Live-Stand. Die Werte in configmap-*.yaml sind seit 2026-10-15 schon die -# Live-Werte (Commit 6e3e9ae). +# Keine Platzhalter mehr (Runbook Schritte 0 und 1, 2026-10-16): Image-Digests +# (unten), Hosts und TLS-Secrets in ingress-*.yaml und die Werte in +# configmap-*.yaml entsprechen dem Live-Stand. # # Backend-Digest: Das neue Image (CMD nur `node dist/main.js`) geht erst # zusammen mit components/backend-roles live (Runbook Schritt 3). Bis dahin @@ -44,14 +41,28 @@ components: - ../../components/backend-roles # Schritt 3 - ../../components/api-hpa # Schritt 5 - ../../components/voice # Sprachnotizen (T7), erst nach VOICE_ENCRYPTION_KEY im Secret +# Stand 2026-10-16 (Runbook Schritt 0): backend, frontend und postgres sind die +# LIVE laufenden Images (kubectl get deploy,sts, gleiche Digests wie im +# Cluster). Neue CI-Digests fuer Schritt 3 +# (nicht hier eintragen, bevor backend-roles live geht): +# apicore-backend sha-6a915aa sha256:b0ff76c4f248565819ddede919f0701d31cd17de3522bc7a9278682840952d1d +# apicore-frontend sha-279ceec sha256:deb9fbc6cd0e300b0bc0b8096b085ba73403b794672c45d0468fe6cc5a3a48dc images: + # Live: apicore-backend:sha-f5b1964@sha256:db06...; hier ohne Tag (gleicher + # Digest, gleiches Image), weil die Manifest-Tests das Backend-Image ohne Tag + # erwarten. Einziger Image-Unterschied im kubectl diff. - name: git.encry.de/nick.rosenloecher/apicore-backend - digest: sha256:0000000000000000000000000000000000000000000000000000000000000000 + digest: sha256:db06e375beab3750ee7d8cab8ab53a53731bd877fe6bdd154b4cd8df52fb4f03 + # Live ohne Tag, nur Digest. - name: git.encry.de/nick.rosenloecher/apicore-frontend - digest: sha256:0000000000000000000000000000000000000000000000000000000000000000 - # Abschreib-Image (.gitea/workflows/whisper-image.yml, Tag sha-). - # Platzhalter bis zum ersten CI-Build; dann den Digest eintragen. + digest: sha256:aa348582d866b0ed628d3086cfc79dc5e8f17308af1bbc9ac80ea616b6828037 + # Abschreib-Image (.gitea/workflows/whisper-image.yml), erster CI-Build + # sha-c53810b. Nur in components/voice, laeuft noch nicht live. - name: git.encry.de/nick.rosenloecher/apicore-whisper - digest: sha256:0000000000000000000000000000000000000000000000000000000000000000 + digest: sha256:bb0eb6cd0168d0acb79a220699d0c8e254df4616d6dae78c109501566e100cd1 + # Live laeuft postgres:18.6-alpine nur per Tag; der Digest ist der Index-Digest, + # den der Pod gezogen hat (= Docker Hub 18.6-alpine am 2026-10-16). Das + # Anheften aendert das Pod-Template: beim apply startet Postgres einmal neu. - name: postgres - digest: sha256:0000000000000000000000000000000000000000000000000000000000000000 + newTag: 18.6-alpine + digest: sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873