apiVersion: batch/v1 kind: CronJob metadata: name: mysql-backup namespace: lpt-prod spec: schedule: "0 3 * * *" concurrencyPolicy: Forbid successfulJobsHistoryLimit: 7 failedJobsHistoryLimit: 3 jobTemplate: spec: backoffLimit: 2 template: spec: restartPolicy: OnFailure containers: - name: mysqldump image: mysql:8.0 imagePullPolicy: IfNotPresent command: - /bin/sh - -ec - | set -euo pipefail TS=$(date +%Y%m%d-%H%M%S) mysqldump --host=mysql --port=3306 --user=root --password="$MYSQL_ROOT_PASSWORD" \ --all-databases --single-transaction --routines --events --triggers \ > "/backup/lpt-prod-${TS}.sql" find /backup -type f -name 'lpt-prod-*.sql' -mtime +14 -delete env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: lpt-secrets key: mysql-root-password volumeMounts: - name: backup mountPath: /backup volumes: - name: backup persistentVolumeClaim: claimName: mysql-backup