# job-Rolle: je Job ein CronJob `node dist/cli.js ` (Spec 2026-10-12 # Abschnitt 2). Hier steht nur, was je Job verschieden ist. Zeitzone, # Forbid, Aufbewahrung, Image, Umgebung, Haertung und Ressourcen setzt der # gemeinsame Patch in kustomization.yaml fuer alle CronJobs mit # app=apicore-job. apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-cleanup labels: app: apicore-job apicore.io/job: cleanup spec: schedule: "0 4 * * *" jobTemplate: spec: backoffLimit: 1 activeDeadlineSeconds: 1800 template: metadata: labels: app: apicore-job apicore.io/job: cleanup db-client: "true" spec: containers: - name: job command: ["node", "dist/cli.js", "cleanup"] --- apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-daily-evaluation labels: app: apicore-job apicore.io/job: daily-evaluation spec: schedule: "30 4 * * *" jobTemplate: spec: backoffLimit: 1 activeDeadlineSeconds: 1800 template: metadata: labels: app: apicore-job apicore.io/job: daily-evaluation db-client: "true" spec: containers: - name: job command: ["node", "dist/cli.js", "daily-evaluation"] --- apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-task-templates labels: app: apicore-job apicore.io/job: task-templates spec: schedule: "0 5 * * *" jobTemplate: spec: backoffLimit: 1 activeDeadlineSeconds: 1800 template: metadata: labels: app: apicore-job apicore.io/job: task-templates db-client: "true" spec: containers: - name: job command: ["node", "dist/cli.js", "task-templates"] --- # Laeuft stuendlich und prueft selbst, ob laut Zeitplan aus GUI oder Env # ein Backup faellig ist. Schreibt nach /data/backups (apicore-data) und # liest die Dokumente aus /data/documents. apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-app-backup labels: app: apicore-job apicore.io/job: app-backup spec: schedule: "0 * * * *" jobTemplate: spec: backoffLimit: 0 activeDeadlineSeconds: 3600 template: metadata: labels: app: apicore-job apicore.io/job: app-backup db-client: "true" spec: volumes: - name: data persistentVolumeClaim: claimName: apicore-data containers: - name: job command: ["node", "dist/cli.js", "app-backup"] volumeMounts: - name: data mountPath: /data --- # rekey und rekey-dry-run laufen nie nach Zeitplan (suspend, 31. Februar), # nur von Hand: kubectl create job ... --from=cronjob/apicore-job-rekey # (Runbook Schritt 4). apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-rekey labels: app: apicore-job apicore.io/job: rekey spec: schedule: "0 0 31 2 *" suspend: true jobTemplate: spec: backoffLimit: 0 activeDeadlineSeconds: 1800 template: metadata: labels: app: apicore-job apicore.io/job: rekey db-client: "true" spec: containers: - name: job command: ["node", "dist/cli.js", "rekey"] --- apiVersion: batch/v1 kind: CronJob metadata: name: apicore-job-rekey-dry-run labels: app: apicore-job apicore.io/job: rekey-dry-run spec: schedule: "0 0 31 2 *" suspend: true jobTemplate: spec: backoffLimit: 0 activeDeadlineSeconds: 1800 template: metadata: labels: app: apicore-job apicore.io/job: rekey-dry-run db-client: "true" spec: containers: - name: job command: ["node", "dist/cli.js", "rekey", "--dry-run"]