diff --git a/charts/saberes/v0.1.0/templates/velero-schedule-weekdays.yaml b/charts/saberes/v0.1.0/templates/velero-schedule-weekdays.yaml new file mode 100644 index 0000000..c868c0c --- /dev/null +++ b/charts/saberes/v0.1.0/templates/velero-schedule-weekdays.yaml @@ -0,0 +1,43 @@ +{{- if .Values.velero.backup.enabled }} +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: {{ include "saberes.fullname" . }}-weekdays + namespace: {{ .Values.velero.namespace }} +spec: + # generate a random backup time between 1 and 5 AM on weekdays + schedule: {{ mod (randNumeric 2) 60 }} {{ mod (randNumeric 1) 6 }} * * 1-5 + template: + includedNamespaces: + - {{ .Release.Namespace }} + {{- with .Values.velero.backup.includedNamespaces }} + {{- toYaml . | nindent 6 }} + {{- end }} + {{- with .Values.velero.backup.excludedResources }} + excludedResources: + {{- toYaml . | nindent 6 }} + {{- end }} + snapshotVolumes: {{ .Values.velero.backup.snapshotVolumes }} + # every weekday backup is good for the next week (7 days) + ttl: 168h0m0s + defaultVolumesToRestic: {{ .Values.velero.backup.defaultVolumesToRestic }} + hooks: + resources: + - name: pgdump + includedResources: + - pods + labelSelector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: {{ .Values.velero.backup.dbAppName }} + app.kubernetes.io/name: postgresql + pre: + - exec: + command: + - "/bin/bash" + - "-c" + - "PGPASSWORD=$POSTGRES_PASSWORD /opt/bitnami/postgresql/bin/pg_dump -U {{ .Values.moodle.dbUser }} -d {{ .Values.moodle.dbName }} > /bitnami/postgresql/{{ .Values.moodle.dbName }}.dump" + timeout: 360s + onError: Continue + useOwnerReferencesInBackup: false +{{- end }} \ No newline at end of file diff --git a/charts/saberes/v0.1.0/values.yaml b/charts/saberes/v0.1.0/values.yaml index d1059e0..1df1087 100644 --- a/charts/saberes/v0.1.0/values.yaml +++ b/charts/saberes/v0.1.0/values.yaml @@ -80,6 +80,22 @@ autoscaling: targetCPUUtilizationPercentage: 90 targetMemoryUtilizationPercentage: 90 +velero: + namespace: velero + backup: + enabled: true + snapshotVolumes: false + defaultVolumesToRestic: true + # cert-manager objects are usually blocked during backup + includedNamespaces: + - saberesdb + dbAppName: saberesdb + excludedResources: + - certificates.cert-manager.io + - orders.acme.cert-manager.io + - certificaterequests.cert-manager.io + - challenges.acme.cert-manager.io + nodeSelector: {} tolerations: [] \ No newline at end of file