From 90cd55698bfd253acb55cb5809b28e7aef282903 Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@hebeler.club>
Date: Tue, 14 Mar 2023 13:39:42 +0100
Subject: [PATCH] added cronjob and backup script

---
 chart/templates/backups.yaml | 54 ++++++++++++++++++++++++++++++++++++
 pass/bin/do_backup           |  5 ++++
 2 files changed, 59 insertions(+)
 create mode 100644 chart/templates/backups.yaml
 create mode 100644 pass/bin/do_backup

diff --git a/chart/templates/backups.yaml b/chart/templates/backups.yaml
new file mode 100644
index 0000000..d677651
--- /dev/null
+++ b/chart/templates/backups.yaml
@@ -0,0 +1,54 @@
+apiVersion: batch/v1
+kind: CronJob
+metadata:
+  creationTimestamp: null
+  name: {{ include "chart.fullname" . }}-backup
+spec:
+  jobTemplate:
+    metadata:
+      creationTimestamp: null
+      name: {{ include "chart.fullname" . }}-backup
+      labels:
+        {{- include "chart.selectorLabels" . | nindent 6 }}
+    spec:
+      template:
+        metadata:
+          creationTimestamp: null
+          labels:
+          {{- include "chart.selectorLabels" . | nindent 10 }}
+        spec:
+          {{- with .Values.imagePullSecrets }}
+          imagePullSecrets:
+            {{- toYaml . | nindent 12 }}
+          {{- end }}
+          securityContext:
+            {{- toYaml .Values.podSecurityContext | nindent 12 }}
+          volumes:
+            - name: order-data
+              persistentVolumeClaim:
+                claimName: order-data
+          {{- if .Values.application.secretName }}
+            - name: application-secret
+              secret:
+                secretName: {{ .Values.application.secretName }}
+                defaultMode: 420
+          {{- end }}
+          containers:
+          - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
+            imagePullPolicy: {{ .Values.image.pullPolicy }}
+            name: {{ .Chart.Name }}-backup
+            command: ["/bin/bash"]
+            args: ["-c", "bin/do_backup"]
+            securityContext:
+              {{- toYaml .Values.securityContext | nindent 14 }}
+            volumeMounts:
+              - name: order-data
+                mountPath: /data
+              {{- if .Values.application.secretName }}
+              - name: application-secret
+                readOnly: true
+                mountPath: /app/config/production.json
+                subPath: production.json
+              {{- end }}
+          restartPolicy: OnFailure
+  schedule: '*/15 * * * *'
\ No newline at end of file
diff --git a/pass/bin/do_backup b/pass/bin/do_backup
new file mode 100644
index 0000000..61f2fef
--- /dev/null
+++ b/pass/bin/do_backup
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+set -e
+
+node backup
-- 
GitLab