feat: Backend migriert die Datenbank beim Start selbst statt ueber Job
Kein separater Kubernetes-Job mehr. Dockerfile-CMD fuehrt jetzt `npm run migrate:deploy` aus, bevor `node dist/main.js` startet - Tabellen werden beim ersten Verbinden automatisch angelegt. Sicher bei mehreren gleichzeitig startenden Pod-Replicas (replicas: 2), da Prisma migrate deploy einen DB-seitigen Advisory-Lock nutzt. deployment.yaml bekommt eine startupProbe (failureThreshold 30 x periodSeconds 10 = bis zu 5 Min), damit liveness/readiness den Container waehrend der Migration nicht neu starten. ARCHITECTURE.md entsprechend aktualisiert, migrate-job.yaml entfernt.
This commit is contained in:
1 parent
a6e5b0331f
commit
76a9e9c3a4
4 files changed
+18
-31
No files matched your search
@@ -24,6 +24,16 @@ spec:
|
||||
name: apicore-backend-config
|
||||
- secretRef:
|
||||
name: apicore-backend-secret
|
||||
# Container fuehrt beim Start selbst `prisma migrate deploy` aus,
|
||||
# bevor der Server Verbindungen annimmt (siehe Dockerfile CMD) -
|
||||
# startupProbe gibt dafuer bis zu 5 Minuten Zeit, ohne dass
|
||||
# liveness/readiness in der Zwischenzeit einen Neustart ausloesen.
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: /health/ready
|
||||
port: 3001
|
||||
failureThreshold: 30
|
||||
periodSeconds: 10
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# Job statt Teil des Deployment-CMD: laeuft einmalig vor dem Rollout, damit
|
||||
# nicht mehrere Backend-Pod-Replicas gleichzeitig Migrationen ausfuehren
|
||||
# (siehe ARCHITECTURE.md Abschnitt 8). Jobs sind unveraenderlich, daher vor
|
||||
# jedem Deploy mit neuem Image-Tag zuerst loeschen:
|
||||
#
|
||||
# kubectl delete job apicore-backend-migrate --ignore-not-found
|
||||
# kubectl apply -f deploy/k8s/backend/migrate-job.yaml
|
||||
# kubectl wait --for=condition=complete job/apicore-backend-migrate --timeout=120s
|
||||
# kubectl apply -f deploy/k8s/backend/deployment.yaml
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: apicore-backend-migrate
|
||||
spec:
|
||||
backoffLimit: 2
|
||||
ttlSecondsAfterFinished: 3600
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
containers:
|
||||
- name: migrate
|
||||
image: git.encry.de/nick.rosenloecher/apicore-backend:latest
|
||||
command: ["npm", "run", "migrate:deploy"]
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: apicore-backend-secret
|
||||
Reference in new issue
Block a user