--- apiVersion: v1 kind: ServiceAccount metadata: name: backup-service-account namespace: paperless --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: role:service-acc namespace: paperless rules: - apiGroups: [""] resources: - pods - pods/exec verbs: - create # - get - list # - watch - apiGroups: ["apps"] resources: - deployments verbs: - get # - list # - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: rolebinding:service-acc namespace: paperless roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: role:service-acc subjects: - kind: ServiceAccount name: backup-service-account namespace: paperless --- apiVersion: batch/v1 kind: CronJob metadata: name: paperless-documents-backup namespace: paperless spec: schedule: "0 0 * * *" jobTemplate: spec: ttlSecondsAfterFinished: 100 template: spec: serviceAccountName: "backup-service-account" containers: - name: export-attachements command: - "/bin/sh" - "-c" args: [' echo "start the export"; kubectl exec -it deploy/paperless-webserver -n paperless -- document_exporter -z /usr/src/paperless/export; echo "Export done" '] image: "bitnami/kubectl:1.21" - name: move-attachements command: - "/bin/sh" - "-c" args: ['echo "sleep 5 min"; sleep 300;echo "end of sleep"; mv /paperless-export/* /documents/ ;echo "move done"'] image: "busybox" volumeMounts: - name: paperless-export mountPath: /paperless-export - name: documents mountPath: /documents volumes: - name: paperless-export persistentVolumeClaim: claimName: paperless-export - name: documents persistentVolumeClaim: claimName: documents restartPolicy: Never --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: documents namespace: paperless spec: storageClassName: nfs-backup-storage-intelligent accessModes: - ReadWriteMany resources: requests: storage: 10Gi