说明
- 参考官方文档 Back up and restore GitLab
- 使用Gitlab-CE镜像部署到K8S,Gitlab版本
12.1.3-ce.0
- 传统部署是使用
Omnibus
方式安装Gitlab,一般通过crontab+shell脚本
的方式定期备份Gitlab - 在K8S环境下,没法这么做,于是想到用
CronJob
调用kubectl
执行容器内部命令的方式备份Gitlab
准备RBAC
创建Role
1 | kind: Role |
创建ServiceAccount
1 | apiVersion: v1 |
创建RoleBinding
1 | apiVersion: rbac.authorization.k8s.io/v1 |
创建ConfigMap
这里用来设置时区
Asia/Shanghai
1 | apiVersion: v1 |
创建CronJob
- kubectl没有官方镜像,需要自己构建
- 每天1点0分启动任务
- 根据标签
app=gitlab
过滤出需要的Pod名字 - 调用kubectl执行命令
- 备份默认存放在
/var/opt/gitlab/backups
,因此最好将此目录挂载到外部存储,避免备份丢失! - Gitlab备份命令不包含
/etc/gitlab/
目录,因此需要手工备份,这里就不展示了
1 | apiVersion: batch/v1beta1 |
验证备份
1 | ======Start Backup GitLab====== |