Files
ApiCore/deploy/k8s/overlays/encry/kustomization.yaml
T
Nick.RosenloecherandClaude Opus 5.5 355a353671
Backend Image / build-and-push (push) Successful in 8m17s
Frontend Image / build-and-push (push) Successful in 15m59s
Manifests / validate (push) Canceled after 11s
chore(deploy): Runbook Schritt 3 live, Images sha-cda3e02 im Overlay (#28)
Am 2026-10-16 waren Backend- und Frontend-Image in Rancher auf sha-cda3e02
gesetzt worden, ohne Migrationen: der neue Backend-Pod wurde nie bereit
(P2010, Tabelle "ThrottlerHit" fehlte), das neue Frontend sprach mit dem
alten Backend. Am 2026-10-19 erst zurückgerollt, dann nach Backup
(pre-rollout-202610191316) und Prüfabfrage (colonyStrength > 40: 0)
pod-hardening und backend-roles angewendet: api + worker, 30 Migrationen
über den initContainer migrate, Job-CronJobs. Network-Policies, HPA und
voice bleiben offen.

Refs #28

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 13:23:05 +02:00

63 lines
3.4 KiB
YAML

# Overlay fuer den RKE2-Cluster von EnCry (Namespace apicore, Traefik mit
# Middleware cloudflare-only). Vor jedem Rollout zeigt
# kubectl diff -k deploy/k8s/overlays/encry
# was sich aendert; nach dem Rollout ist der Diff leer.
#
# 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
# bleibt hier der Digest des laufenden Images. Ohne APICORE_ROLE bricht das
# neue Image den Start in Produktion absichtlich ab. APICORE_ROLE nicht von
# Hand setzen: ohne die initContainer von backend-roles liefe dann keine
# Migration.
#
# Postgres: Bis 2026-10-13 wichen die Repo-Manifeste vom Cluster ab (Repo
# app: apicore-postgres, ohne Haertung, volumeClaimTemplates; Cluster
# app.kubernetes.io/name, gehaertet, statisches PVC apicore-postgres-data).
# Seit 2026-10-13 ist base/postgres der Live-Stand (StatefulSet, Service,
# PVC), nur das Image-Digest kommt von hier. Selektor und Volumes sind
# unveraenderlich: Aenderungen an Postgres immer zuerst gegen den Cluster
# pruefen (kubectl diff), nie die Live-Haertung zuruecknehmen. Das PV
# pv-apicore-postgres und sein SMB-Secret liegen nicht in diesem Repo.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: apicore
resources:
- ../../base
- configmap-backend.yaml
- configmap-frontend.yaml
- ingress-backend.yaml
- ingress-frontend.yaml
# Zielstand. Je Runbook-Schritt nur die bis dahin freigegebenen Komponenten
# aktivieren (Schritt 1: keine). Das Auskommentieren ist nur lokal fuer
# kubectl diff/apply - nicht committen. Die CI rendert und prueft jeden
# Schritt (deploy/k8s/tests/render-stages.mjs).
components:
- ../../components/network-policies # Schritt 2
- ../../components/pod-hardening # Schritt 3
- ../../components/backend-roles # Schritt 3
- ../../components/api-hpa # Schritt 5
- ../../components/voice # Sprachnotizen (T7), erst nach VOICE_ENCRYPTION_KEY im Secret
# Stand 2026-10-19: Runbook Schritt 3 live (pod-hardening + backend-roles,
# 30 Migrationen ueber den initContainer migrate, Backup vorher). Noch NICHT
# angewendet: network-policies (Schritt 2), api-hpa (Schritt 5), voice. Fuer
# kubectl apply diese drei Zeilen lokal auskommentieren (nicht committen).
images:
- name: git.encry.de/nick.rosenloecher/apicore-backend
digest: sha256:99b6b038ca5b0417e7cf75b2461cf29095c306ddc289a59cb7d48ff15ef3f61f # sha-cda3e02
- name: git.encry.de/nick.rosenloecher/apicore-frontend
digest: sha256:52765a963b2d1e7a093cabab467e5a74d8e5b910e63a8c6bc5ddf5f5b3af9baa # sha-cda3e02
# 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:bb0eb6cd0168d0acb79a220699d0c8e254df4616d6dae78c109501566e100cd1
# Live laeuft postgres:18.6-alpine weiter nur per Tag (am 2026-10-19 bewusst
# ohne Digest angewendet, um einen Neustart auf SMB zu vermeiden). Der Digest
# ist der gezogene Index-Digest; mit ihm startet Postgres beim apply einmal neu.
- name: postgres
newTag: 18.6-alpine
digest: sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873