generated from onedr0p/cluster-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBackupTasks.yml
28 lines (26 loc) · 1.2 KB
/
BackupTasks.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
---
version: "3"
tasks:
volume:
desc: Create a job to backup an app (ex. task PVC=plex-config-v1 backup:volume)
interactive: true
cmds:
- |
kubectl -n {{.NAMESPACE}} create job --from=cronjob/{{.APP}}-backup {{.APP}}-backup-{{.TS}} --dry-run=client --output yaml \
| yq eval "del(.spec.template.spec.initContainers)" - \
| kubectl apply -f -
- kubectl -n {{.NAMESPACE}} wait pod --for condition=ready --selector=job-name={{.APP}}-backup-{{.TS}} --timeout=1m
- kubectl -n {{.NAMESPACE}} logs --selector=job-name={{.APP}}-backup-{{.TS}} -f
- kubectl -n {{.NAMESPACE}} delete job {{.APP}}-backup-{{.TS}}
vars:
NAMESPACE:
sh: kubectl get pvc -A | grep {{.PVC}} | awk '{print $1}'
APP:
sh: kubectl -n {{.NAMESPACE}} get pvc {{.PVC}} -o jsonpath='{.metadata.labels.app\.kubernetes\.io\/name}'
TS:
sh: date "+%Y%m%d%H%M%S"
preconditions:
- sh: kubectl -n {{.NAMESPACE}} get cronjob {{.APP}}-backup
msg: "Error: cronjob/{{.APP}}-backup in namespace/{{.NAMESPACE}} not found"
- sh: kubectl -n {{.NAMESPACE}} get pvc {{.PVC}}
msg: "Error: pvc/{{.PVC}} in namespace/{{.NAMESPACE}} not found"