apiVersion: batch/v1 kind: CronJob metadata: name: engram-backup labels: app: engram-backup spec: schedule: "0 0 * * *" timeZone: "Asia/Shanghai" concurrencyPolicy: Forbid startingDeadlineSeconds: 300 successfulJobsHistoryLimit: 1 failedJobsHistoryLimit: 3 suspend: false jobTemplate: spec: backoffLimit: 2 activeDeadlineSeconds: 1800 ttlSecondsAfterFinished: 86400 template: metadata: labels: app: engram-backup spec: restartPolicy: OnFailure initContainers: - name: backup image: engram env: - name: ENGRAM_DATA_DIR value: /engram-data volumeMounts: - name: tmp mountPath: /tmp - name: engram-data mountPath: /engram-data command: - /bin/sh args: - -c - 'export DATE=$(date +%Y/%m/%d) && mkdir -p /tmp/engram/$DATE && engram export "/tmp/engram/$DATE/engram-data.json" && gzip /tmp/engram/$DATE/engram-data.json' securityContext: runAsUser: 0 containers: - name: upload image: aws imagePullPolicy: IfNotPresent envFrom: - secretRef: name: backup-env - configMapRef: name: backup-env args: - s3 - sync - "./engram" - "s3://senset-backups/engram-backup" volumeMounts: - name: tmp mountPath: /aws readOnly: true volumes: - name: tmp emptyDir: {} - name: engram-data hostPath: path: /data/engram type: Directory