- Ingress: HTTP->HTTPS-Middleware redirect-to-https wieder am Ingress (wie Wabenhain), Service-Port als Nummer, cert-manager letsencrypt-prod. - NetworkPolicy: Traefik ueber das Pod-Label (traefik/rke2-traefik) in jedem Namespace erkannt statt fester Namespace "traefik" - verhindert, dass die Seite unerreichbar wird, wenn Traefik z. B. in kube-system laeuft. - README: Voraussetzungen pruefen und Deployment Schritt fuer Schritt (kubectl wait auf Postgres) wie bei Wabenhain. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Kubernetes (RKE2, Traefik, cert-manager)
Einmalig
- csi-driver-smb installieren:
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 - Auf dem NAS die Ordner
artista/modelcamp-postgres(leer) undartista/modelcamp-mediaanlegen und SMB-Verschlüsselung erlauben. - Anpassen:
nas.example.lanin02-storage.yamlmodelcamp.example.orgin01-config.yamlund05-ingress.yaml- den Traefik-Namespace in
07-networkpolicy.yaml
- Secrets:
cp k8s/secrets.yaml.example k8s/secrets.yaml, die Werte eintragen. - Ausrollen:
kubectl apply -f k8s/00-namespace.yaml kubectl apply -f k8s/secrets.yaml kubectl apply -f k8s/ - Admin anlegen (E-Mail und Name ersetzen; das einmalige Passwort wird ausgegeben, die 2FA richtest du bei der ersten Anmeldung unter
/adminein):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","[email protected]","--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:
kubectl -n artista rollout restart deploy/artista-modelcamp-app
Der initContainer migriert die Datenbank automatisch.