Files
by-other-means/helm/templates/cronjobs.yaml
T
2026-07-29 00:30:37 -04:00

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 }}