From 5df2a9bf0e55dac699dab7c9e172ab2fc22ee9fe Mon Sep 17 00:00:00 2001 From: Junwei Zhao Date: Wed, 23 Dec 2020 19:37:07 +1100 Subject: [PATCH] add db backup --- backup-cronjobs.yaml | 120 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 backup-cronjobs.yaml diff --git a/backup-cronjobs.yaml b/backup-cronjobs.yaml new file mode 100644 index 0000000..6301650 --- /dev/null +++ b/backup-cronjobs.yaml @@ -0,0 +1,120 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: etcd-snapshot + namespace: default +spec: + schedule: "0 5 * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: backup + # Same image as in /etc/kubernetes/manifests/etcd.yaml + image: k8s.gcr.io/etcd:3.4.3-0 + env: + - name: ETCDCTL_API + value: "3" + command: ["/bin/sh"] + args: ["-c", "etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key snapshot save /backup/etcd/snapshot-$(date +%Y-%m-%d_%H-%M-%S_%Z).db"] + volumeMounts: + - mountPath: /etc/kubernetes/pki/etcd + name: etcd-certs + readOnly: true + - mountPath: /backup/etcd + subPath: etcd + name: backup + hostNetwork: true + restartPolicy: Never + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: node-role.kubernetes.io/master + operator: Exists + tolerations: + - effect: NoSchedule + operator: Exists + volumes: + - name: etcd-certs + hostPath: + path: /etc/kubernetes/pki/etcd + type: Directory + - name: backup + persistentVolumeClaim: + claimName: backups-nfs-pvc +--- + +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: pg-bakcup + namespace: default +spec: + schedule: "0 6 * * *" + jobTemplate: + spec: + template: + spec: + nodeSelector: + dell: "true" + containers: + - name: backup + # Same image as in /etc/kubernetes/manifests/etcd.yaml + image: postgres:11 + env: + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: postgresql-credentials + key: password + - name: DB_USER + value: postgres + - name: DB_HOST + value: home.toozhao.com + command: ["/bin/sh"] + args: ["-c", "PGPASSWORD=$DB_PASSWORD pg_dumpall -c -h $DB_HOST -p 32222 -U $DB_USER| gzip > /backups/postgres/dump-$(date +%Y-%m-%d_%H-%M-%S_%Z).tar.gz"] + volumeMounts: + - mountPath: /backups/postgres + subPath: postgres + name: backup + hostNetwork: true + restartPolicy: Never + tolerations: + - effect: NoSchedule + operator: Exists + volumes: + - name: backup + persistentVolumeClaim: + claimName: backups-nfs-pvc + +--- + +apiVersion: v1 +kind: PersistentVolume +metadata: + name: backups-nfs +spec: + capacity: + storage: 100Gi + accessModes: + - ReadWriteMany + nfs: + server: 192.168.1.4 + path: "/backups" +--- + +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + namespace: "default" + name: "backups-nfs-pvc" +spec: + storageClassName: "" + accessModes: + - ReadWriteMany + resources: + requests: + storage: 100Gi