# Kubernetes (RKE2, Traefik, cert-manager) ## Einmalig 1. **csi-driver-smb installieren:** ```bash helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts helm install csi-driver-smb csi-driver-smb/csi-driver-smb -n kube-system ``` 2. **Auf dem NAS** die Ordner `artista/modelcamp-postgres` (leer) und `artista/modelcamp-media` anlegen und SMB-Verschlüsselung erlauben. 3. **Anpassen:** - `nas.example.lan` in `02-storage.yaml` - `modelcamp.example.org` in `01-config.yaml` und `05-ingress.yaml` - den Traefik-Namespace in `07-networkpolicy.yaml` 4. **Secrets:** `cp k8s/secrets.yaml.example k8s/secrets.yaml`, die Werte eintragen. 5. **Ausrollen:** ```bash kubectl apply -f k8s/00-namespace.yaml kubectl apply -f k8s/secrets.yaml kubectl apply -f k8s/ ``` 6. **Admin anlegen** (E-Mail und Name ersetzen; das einmalige Passwort wird ausgegeben, die 2FA richtest du bei der ersten Anmeldung unter `/admin` ein): ```bash kubectl -n artista run admin-create --rm -i --restart=Never \ --image=git.encry.de/nick.rosenloecher/artista-modelcamp-tools:latest --labels=db-client=true \ --overrides='{"spec":{"securityContext":{"runAsNonRoot":true,"runAsUser":1001,"seccompProfile":{"type":"RuntimeDefault"}},"containers":[{"name":"admin-create","image":"git.encry.de/nick.rosenloecher/artista-modelcamp-tools:latest","command":["tsx","scripts/create-admin.ts","--email","du@example.org","--name","Dein Name"],"envFrom":[{"configMapRef":{"name":"artista-modelcamp-config"}},{"secretRef":{"name":"artista-modelcamp-secrets"}}],"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}}}]}}' ``` ## Update Bei jedem Push auf `main` baut die Gitea-Pipeline die Images mit dem Tag `latest`. Danach: ```bash kubectl -n artista rollout restart deploy/artista-modelcamp-app ``` Der initContainer migriert die Datenbank automatisch.