+{{- if .Values.backup.enabled }}
+{{- $release := .Release }}
+{{- $values := .Values }}
+{{- $backup := $values.backup }}
+{{- range $index, $schedule := $backup.schedule }}
+---
+apiVersion: batch/v1beta1
+kind: CronJob
+metadata:
+ name: {{ template "cassandra.fullname" $ }}-backup-{{ $schedule.keyspace | replace "_" "-" }}
+ labels:
+ app: {{ template "cassandra.name" $ }}-cain
+ chart: {{ template "cassandra.chart" $ }}
+ release: "{{ $release.Name }}"
+ heritage: "{{ $release.Service }}"
+spec:
+ schedule: {{ $schedule.cron | quote }}
+ concurrencyPolicy: Forbid
+ startingDeadlineSeconds: 120
+ jobTemplate:
+ spec:
+ template:
+ metadata:
+ annotations:
+ {{ toYaml $backup.annotations }}
+ spec:
+ restartPolicy: OnFailure
+ serviceAccountName: {{ template "cassandra.serviceAccountName" $ }}
+ containers:
+ - name: cassandra-backup
+ image: "{{ $backup.image.repos }}:{{ $backup.image.tag }}"
+ command: ["cain"]
+ args:
+ - backup
+ - --namespace
+ - {{ $release.Namespace }}
+ - --selector
+ - release={{ $release.Name }},app={{ template "cassandra.name" $ }}
+ - --keyspace
+ - {{ $schedule.keyspace }}
+ - --dst
+ - {{ $backup.destination }}
+ {{- with $backup.extraArgs }}
+{{ toYaml . | indent 12 }}
+ {{- end }}
+ {{- with $backup.env }}
+ env:
+{{ toYaml . | indent 12 }}
+ {{- end }}
+ {{- with $backup.resources }}
+ resources:
+{{ toYaml . | indent 14 }}
+ {{- end }}
+ affinity:
+ podAffinity:
+ preferredDuringSchedulingIgnoredDuringExecution:
+ - labelSelector:
+ matchExpressions:
+ - key: app
+ operator: In
+ values:
+ - {{ template "cassandra.fullname" $ }}
+ - key: release
+ operator: In
+ values:
+ - {{ $release.Name }}
+ topologyKey: "kubernetes.io/hostname"
+ {{- with $values.tolerations }}
+ tolerations:
+{{ toYaml . | indent 10 }}
+ {{- end }}
+{{- end }}
+{{- end }}