57 lines
2.6 KiB
YAML
57 lines
2.6 KiB
YAML
{{- define "system.backup.cronjob" -}}
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: {{ .system_name }}-{{ .backup.pvc_name }}-backup
|
|
spec:
|
|
schedule: {{ required "Values.backups.volumes[n].schedule required in crontab format" .backup.schedule }}
|
|
successfulJobsHistoryLimit: 1
|
|
failedJobsHistoryLimit: 1
|
|
jobTemplate:
|
|
spec:
|
|
template:
|
|
spec:
|
|
restartPolicy: OnFailure
|
|
volumes:
|
|
- name: nfs-backup
|
|
nfs:
|
|
server: {{ required "Values.backups.volumes[n].nas_ip required to make nfs connection" .nas_ip }}
|
|
path: {{ required "Values.backups.volumes[n].nas_path required to store backup to a nfs connection" .backup.nas_path }}
|
|
|
|
- name: {{ required "Values.backups.volumes[n].pvc_name required" .backup.pvc_name }}
|
|
persistentVolumeClaim:
|
|
claimName: {{ .backup.pvc_name }}
|
|
containers:
|
|
- name: config-backup
|
|
image: {{ .image | default "alpine" }}
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- sh
|
|
- -c
|
|
- date;
|
|
echo "Creating backup for {{ .system_name }}";
|
|
echo -e "\nCreating {{ .system_name }} directory if it doesnt already exist";
|
|
mkdir -p /nas/backup/{{ .system_name }};
|
|
echo -e "\nProcessing {{ .backup.pvc_name }}";
|
|
echo " - Creating backup of {{ .backup.pvc_name }} volume";
|
|
tar -czf /nas/backup/{{ .system_name }}/{{ .backup.pvc_name }}_$(date +%Y-%m-%d).tar.gz /backup_source;
|
|
echo " - Enforcing backup retention policy for {{ .backup.pvc_name }} to latest {{ required "Values.backups.volumes[n].retention required as an integer" .backup.retention }}";
|
|
ls -t /nas/backup/{{ required "Values.backups.system_name required" .system_name }}/{{ .backup.pvc_name }}_*.tar.gz | sort -r | tail -n +{{ add1 .backup.retention }} | xargs rm -f;
|
|
echo -e "\nCompleted backup of {{ .backup.pvc_name }}";
|
|
date;
|
|
|
|
volumeMounts:
|
|
- name: nfs-backup
|
|
mountPath: /nas/backup
|
|
- name: {{ .backup.pvc_name }}
|
|
mountPath: /backup_source
|
|
{{- end }}
|
|
|
|
{{ if .Values.backups.enabled }}
|
|
{{- range $parent, $backup := .Values.backups.volumes -}}
|
|
{{- if $backup.enabled }}
|
|
{{ include "system.backup.cronjob" (dict "backup" $backup "image" $.Values.backups.image "nas_ip" $.Values.backups.nas_ip "system_name" $.Values.backups.system_name) }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }} |