From a7c11ccbd0e7e81bcb624c61910a86d03cc256f9 Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Sun, 27 Sep 2026 20:11:20 +0200 Subject: [PATCH] docs: Einrichtung der SMB-Volumes im Betriebshandbuch Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/BETRIEB.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/BETRIEB.md b/docs/BETRIEB.md index 42be448..b03b09a 100644 --- a/docs/BETRIEB.md +++ b/docs/BETRIEB.md @@ -26,10 +26,14 @@ Der Build braucht Internet für `next/font` (Schriften werden eingebettet), aber ## 2. Einmalig einrichten 1. **Overlay anpassen** (`k8s/overlays/production/`): Image-Namen und Tag, Domain in `kustomization.yaml` (APP_URL) und `ingress.yaml`, `ingressClassName` (`kubectl get ingressclass`), ClusterIssuer (Beispiel `letsencrypt-prod`) und TLS-Secret-Name. -2. **StorageClasses:** - - PostgreSQL bekommt Blockspeicher mit ReadWriteOnce, auf keinen Fall eine SMB-Freigabe (Begründung in `k8s/base/postgres.yaml`). - - Das Medienvolume braucht ReadWriteMany, sonst `replicas: 1`. - - Das Backup-Volume darf NFS oder SMB sein. +2. **Speicher:** + - **PostgreSQL** bekommt Blockspeicher mit ReadWriteOnce (StorageClass im StatefulSet), auf keinen Fall eine SMB-Freigabe (Begründung in `k8s/base/postgres.yaml`). + - **Medien und Sicherungen** liegen auf SMB, über `k8s/overlays/production/smb-volumes.yaml`: + 1. csi-driver-smb installieren, Befehl steht im Kopf der Datei. + 2. Auf dem NAS die Ordner `modelcamp-media` und `modelcamp-backup` anlegen und `source` in der Datei anpassen. + 3. Das SMB-Secret anlegen: `kubectl -n artista create secret generic artista-modelcamp-smb --from-literal=username='…' --from-literal=password='…'`. Empfohlen ist ein eigener NAS-Benutzer, der nur diese Ordner sieht. + - Die PVCs sind statisch an die PVs gebunden. Die Rechte setzen die `mountOptions`: `uid=1001` für die App, `uid=70` für den Backup-Job, der mit `0700` bzw. `0600` geschützt ist, weil die Dumps personenbezogene Daten enthalten. Auf SMB wirkt `fsGroup` nicht. + - Ohne SMB: `smb-volumes.yaml` und die beiden PVC-Patches im Overlay entfernen, dann greift die Default-StorageClass. Das Medienvolume braucht dann ReadWriteMany, sonst `replicas: 1`. 3. **Secret anlegen:** Befehl steht in `k8s/secret.example.yaml`, besser über Sealed Secrets oder den External Secrets Operator. 4. **Anwenden:** `kubectl apply -k k8s/overlays/production` 5. **Migration** (siehe Abschnitt 3), danach das erste Admin-Konto: