Docker-Images bauen und veroeffentlichen / build-and-push (push) Successful in 1m53s
Voraussetzungen pruefen (Traefik, cert-manager, csi-driver-smb), Einzel-Applies in Reihenfolge mit kubectl wait auf Postgres, Fehlersuche fuer Migration, App und Zertifikat. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
3.4 KiB
3.4 KiB
ARTISTA Modelcamp in Kubernetes (RKE2)
Rohe Manifeste wie bei Wabenhain, Nummerierung = Reihenfolge. Voraussetzungen im Cluster (wie bei Wabenhain):
- Traefik als Ingress-Controller (IngressClass
traefik) - cert-manager mit dem ClusterIssuer
letsencrypt-prod - csi-driver-smb für die SMB-Volumes
Prüfen:
kubectl get ingressclass
kubectl get clusterissuer letsencrypt-prod
kubectl get pods -A -l 'app.kubernetes.io/name in (traefik,rke2-traefik)'
Einmalige Vorbereitung
- Images:
.gitea/workflows/docker-build.ymlbaut bei jedem Push aufmaindie Imagesgit.encry.de/nick.rosenloecher/artista-modelcamp:latestund…-tools:latest. Voraussetzung ist das Repo-SecretREGISTRY_TOKEN(Personal Access Token mitpackage-Scope), wie bei Wabenhain. - csi-driver-smb (falls noch nicht vorhanden):
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 - NAS: Die Ordner
artista/modelcamp-postgres(leer) undartista/modelcamp-mediaanlegen und SMB-Verschlüsselung erlauben.nas.example.lanin02-storage.yamlanpassen. - Domain:
modelcamp.example.orgin01-config.yaml(APP_URL) und05-ingress.yaml(2×) ersetzen. Der DNS-Eintrag muss auf den Cluster zeigen, sonst stellt cert-manager kein Zertifikat aus. - Secrets:
cp k8s/secrets.yaml.example k8s/secrets.yamlund ausfüllen. Die Datei steht in.gitignore, bitte nie mit echten Werten committen.
Deployment
kubectl apply -f k8s/00-namespace.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/01-config.yaml
kubectl apply -f k8s/02-storage.yaml
kubectl apply -f k8s/03-postgres.yaml
kubectl wait --for=condition=ready pod -l app=artista-modelcamp-postgres -n artista --timeout=180s
kubectl apply -f k8s/04-app.yaml
kubectl apply -f k8s/05-ingress.yaml
kubectl apply -f k8s/06-worker.yaml
kubectl apply -f k8s/07-networkpolicy.yaml
Die Migration läuft automatisch als initContainer vor dem App-Start. Den Fortschritt zeigt kubectl rollout status deployment/artista-modelcamp-app -n artista, das Zertifikat kubectl get certificate -n artista.
Erstes Admin-Konto
E-Mail und Name ersetzen. Das einmalige Passwort wird ausgegeben, die 2FA richtest du bei der ersten Anmeldung unter /admin ein.
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"]}}}]}}'
Bei einem neuen Image (Redeploy)
kubectl rollout restart deployment/artista-modelcamp-app -n artista
Fehlersuche
kubectl -n artista logs deploy/artista-modelcamp-app -c migrate # Migration
kubectl -n artista logs deploy/artista-modelcamp-app -c app # App
kubectl -n artista describe certificate artista-modelcamp-tls # Zertifikat