# One-shot schema apply (AUDIT-WP-0005-T02). # # Uses the migration lease, not the runtime lease. The runtime Deployment # sets AUDIT_CORE_AUTO_MIGRATE=0 so a leaked app credential cannot change # the schema. Re-apply after deleting the previous Job when a new migration # ships (Jobs are immutable). # # Image digest must match deploy/audit-core.yaml. --- apiVersion: batch/v1 kind: Job metadata: name: audit-core-migrate namespace: audit-core labels: app.kubernetes.io/name: audit-core app.kubernetes.io/component: migrate spec: backoffLimit: 6 ttlSecondsAfterFinished: 86400 template: metadata: labels: app.kubernetes.io/name: audit-core app.kubernetes.io/component: migrate spec: restartPolicy: OnFailure securityContext: runAsNonRoot: true runAsUser: 10001 fsGroup: 10001 seccompProfile: type: RuntimeDefault containers: - name: migrate image: forgejo.coulomb.social/coulomb/audit-core@sha256:7febc28e8a828dbc245144a38e5728e0fbf496b594dd7591170b450a1265fb10 imagePullPolicy: IfNotPresent command: ["python", "-m", "audit_core", "migrate"] env: - name: AUDIT_CORE_CREDENTIAL_DIR value: /etc/audit-core/db - name: AUDIT_CORE_DATABASE_SCHEMA value: audit_core - name: AUDIT_CORE_MIGRATE_ROLE value: audit_core_migrate resources: requests: cpu: 25m memory: 64Mi limits: cpu: 250m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] readOnlyRootFilesystem: true volumeMounts: - name: tmp mountPath: /tmp - name: database-credential mountPath: /etc/audit-core/db readOnly: true volumes: - name: tmp emptyDir: {} - name: database-credential secret: secretName: audit-core-database-migrate defaultMode: 0440