# Worker: gibt abgelaufene Reservierungen frei (nach Rueckfrage bei Stripe), # zieht faellige Raten ein, trennt Zahlungsmethoden nach der letzten Rate und # versendet den E-Mail-Ausgang. Ohne ihn laufen Ratenzahlung und # Reservierungsfreigabe nicht. Idempotent; Forbid verhindert Ueberlappung. apiVersion: batch/v1 kind: CronJob metadata: name: artista-modelcamp-worker spec: schedule: "*/10 * * * *" timeZone: "Europe/Berlin" concurrencyPolicy: Forbid startingDeadlineSeconds: 300 successfulJobsHistoryLimit: 3 failedJobsHistoryLimit: 5 jobTemplate: spec: backoffLimit: 1 activeDeadlineSeconds: 900 template: metadata: labels: artista/db-client: "true" spec: restartPolicy: Never automountServiceAccountToken: false securityContext: runAsNonRoot: true runAsUser: 1001 seccompProfile: { type: RuntimeDefault } containers: - name: worker image: artista-modelcamp-tools command: ["tsx", "scripts/worker.ts"] envFrom: - configMapRef: { name: artista-modelcamp-config } - secretRef: { name: artista-modelcamp-secrets } resources: requests: { cpu: 50m, memory: 192Mi } limits: { memory: 512Mi } securityContext: allowPrivilegeEscalation: false capabilities: { drop: ["ALL"] }