From 2995890b07bec7dfd5ec2f8822d61a21aaacf4b2 Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Mon, 12 Oct 2026 06:48:00 +0200 Subject: [PATCH] chore(k8s): App-Deployment auf festen Build gepinnt, wie im Cluster Image per Digest statt :latest, imagePullPolicy IfNotPresent, Pod- und Container-securityContext (runAsNonRoot 1001, seccomp RuntimeDefault, keine Rechteausweitung, alle Capabilities entfernt). kubectl diff gegen den Cluster ist leer. Neue Builds per kubectl set image ...:sha-. Co-Authored-By: Claude Opus 5.5 (1M context) --- k8s/05-app-deployment.yaml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/k8s/05-app-deployment.yaml b/k8s/05-app-deployment.yaml index b2d74f4..01d41b5 100644 --- a/k8s/05-app-deployment.yaml +++ b/k8s/05-app-deployment.yaml @@ -1,5 +1,5 @@ -# image: unten mit der tatsaechlichen Registry/Tag aus der Gitea-Actions- -# Pipeline ersetzen. Kein separater Migrations-Job mehr noetig: der +# image: unten auf den Build gepinnt, siehe Kommentar dort. Kein separater +# Migrations-Job mehr noetig: der # Container fuehrt "prisma migrate deploy" + "prisma db seed" selbst aus, # BEVOR er den Server startet (siehe Dockerfile-CMD in der runner-Stage) — # beide Schritte sind idempotent, laufen also bei jedem Neustart gefahrlos @@ -72,9 +72,24 @@ spec: # "Uploads lassen sich nicht speichern". securityContext: fsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + runAsGroup: 1001 + seccompProfile: + type: RuntimeDefault containers: - name: app - image: git.encry.de/nick.rosenloecher/wabenhain:latest + # Fest auf einen Build gepinnt (Tag sha- aus der + # Gitea-Pipeline), nie :latest: ein "rollout restart" holt damit + # kein ungeprueftes neues Image. Neuer Build: + # kubectl -n wabenhain set image deploy/wabenhain-app app=git.encry.de/nick.rosenloecher/wabenhain:sha- + # und den Tag hier nachziehen. + image: git.encry.de/nick.rosenloecher/wabenhain@sha256:17d880340cdad9448b27a017316f9b906572c455a8e15579ecee50c22e06e14c + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] ports: - containerPort: 3000 envFrom: