62 lines
1.8 KiB
YAML
62 lines
1.8 KiB
YAML
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: backup
|
|
spec:
|
|
schedule: "42 */6 * * *"
|
|
concurrencyPolicy: Replace
|
|
jobTemplate:
|
|
spec:
|
|
completions: 10
|
|
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/";
|
|
done
|
|
volumeMounts:
|
|
- name: rclone-config
|
|
mountPath: /config/rclone
|
|
- name: backup-config
|
|
mountPath: /config/backup
|
|
securityContext:
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
readOnlyRootFilesystem: true
|
|
restartPolicy: Never
|
|
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
|
|
runAsNonRoot: true
|