# api-Rolle des Backends (Spec 2026-10-12 Abschnitte 2, 5.3 und 7). # Migration und Seed laufen als initContainer statt im CMD: scheitert die # Migration, startet der neue Pod nicht und der alte laeuft weiter. # `migrate deploy` nimmt einen Advisory-Lock in der DB, darum duerfen api und # worker gleichzeitig starten. Den Seed fuehrt nur die api aus. apiVersion: apps/v1 kind: Deployment metadata: name: apicore-backend spec: template: # Das Label db-client: "true" setzt components/network-policies, deren # Postgres-Policy es braucht. spec: automountServiceAccountToken: false volumes: - name: tmp emptyDir: {} initContainers: - name: migrate image: git.encry.de/nick.rosenloecher/apicore-backend imagePullPolicy: IfNotPresent command: ["node", "node_modules/prisma/build/index.js", "migrate", "deploy"] env: - name: HOME value: /tmp - name: CHECKPOINT_DISABLE value: "1" envFrom: - configMapRef: name: apicore-backend-config - secretRef: name: apicore-backend-secret securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"] volumeMounts: - name: tmp mountPath: /tmp resources: requests: cpu: 50m memory: 192Mi limits: cpu: 500m memory: 512Mi - name: seed image: git.encry.de/nick.rosenloecher/apicore-backend imagePullPolicy: IfNotPresent command: ["node", "dist/seed.js"] envFrom: - configMapRef: name: apicore-backend-config - secretRef: name: apicore-backend-secret securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"] volumeMounts: - name: tmp mountPath: /tmp resources: requests: cpu: 50m memory: 192Mi limits: cpu: 500m memory: 512Mi containers: - name: apicore-backend env: - name: APICORE_ROLE value: api - name: HOME value: /tmp securityContext: readOnlyRootFilesystem: true volumeMounts: - name: tmp mountPath: /tmp resources: requests: cpu: 50m memory: 192Mi limits: cpu: 500m memory: 512Mi