![]()
简介
自己的gitlab是托管在kubernetes上的,所以想直接使用cronjob对gitlab去定时备份
操作
其实就是直接使用下面的命令备份
kubectl exec -it gitlab-0 gitlab-backup create -n gitlab
默认创建的备份文件在下面的目录
/var/opt/gitlab/backups
所以就需要有一个pv去挂载到这个目录上,在gitlab的yaml文件加上下面两句
1 2
| - mountPath: /var/opt/gitlab/backups name: backup
|
1 2 3 4 5 6 7 8
| - metadata: name: backup spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 400Gi storageClassName: "managed-nfs-storage"
|
之后就是创建一个cronjob
编写一个dockerfile
1 2 3
| FROM centos:7 RUN mkdir /root/.kube/ COPY kubectl /usr/local/bin
|
之后编译镜像
docker build . -t registry.bboysoul.cn/kubectl:v1.21.0
之后推送镜像
docker push registry.bboysoul.cn/kubectl:v1.21.0
接着创建一个secret来存储kube config
kubectl create secret generic kube-config --from-file ~/.kube/config -n cronjob
之后编写cronjob yaml文件
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 29 30 31
| apiVersion: batch/v1 kind: CronJob metadata: name: gitlab-backup namespace: cronjob spec: schedule: "0 3 * * *" successfulJobsHistoryLimit: 5 failedJobsHistoryLimit: 5 jobTemplate: spec: template: spec: hostAliases: - ip: "10.10.100.10" hostnames: - "k8s.bboysoul.cn" containers: - name: gitlab-backup image: registry.bboysoul.cn/kubectl:v1.21.0 imagePullPolicy: IfNotPresent command: ['kubectl','exec','-it','gitlab-0','gitlab-backup','create','-n','gitlab'] volumeMounts: - name: kube-config mountPath: "/root/.kube/" restartPolicy: OnFailure volumes: - name: kube-config secret: secretName: kube-config
|
apply
kubectl apply -f gitlab-backup-cronjob.yaml
这样不出问题每天早上3点就会自动执行备份的任务
解释一下一些必要的参数
1 2
| successfulJobsHistoryLimit: 5 failedJobsHistoryLimit: 5
|
这两个表示留下执行成功和失败的job个数
其他的貌似也没有啥可以讲的
欢迎关注我的博客www.bboy.app
Have Fun