apps/garage/backup/resources/cronjob.yaml

63 lines
1.8 KiB
YAML
Raw Normal View History

2024-05-08 13:00:41 +00:00
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup
spec:
schedule: "42 */6 * * *"
2024-05-09 13:59:12 +00:00
concurrencyPolicy: Replace
2024-05-08 13:00:41 +00:00
jobTemplate:
spec:
2024-05-10 08:45:06 +00:00
completions: 10
2024-05-08 13:00:41 +00:00
parallelism: 3
completionMode: Indexed
ttlSecondsAfterFinished: 300
backoffLimitPerIndex: 3
template:
spec:
containers:
- name: rclone
image: rclone
command: ["/bin/ash", "-c"]
args:
- |
for bucket in $(cat /config/backup/buckets | head -n $JOB_COMPLETION_INDEX | tail -n 1);
do
if [ -z "$bucket" ]; then exit 0; fi
echo "Syncing bucket $bucket";
rclone sync -P \
--update \
--checksum \
--no-traverse \
--no-update-modtime \
--no-update-dir-modtime \
--ignore-errors \
-v \
"garage:$bucket" "storagebox:garage/$bucket/";
2024-05-08 13:00:41 +00:00
done
volumeMounts:
- name: rclone-config
mountPath: /config/rclone
- name: backup-config
mountPath: /config/backup
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
2024-05-09 05:22:03 +00:00
restartPolicy: Never
2024-05-08 13:00:41 +00:00
volumes:
- name: rclone-config
secret:
secretName: rclone-backup-config
defaultMode: 420
- name: backup-config
configMap:
name: backup-config
defaultMode: 420
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
2024-05-09 13:59:12 +00:00
runAsNonRoot: true