环境
版本:13.12.5
helm 使用 minio,omnibus 新建 minio 最新版,删除 helm 种的 minio
备份
- 备份 gitlab 数据
1
| kubectl exec <task-runner pod name> -i /bin/bash backup-utility
|
- 备份 gitlab 密钥(ci 变量,runner token 均用这个加密)
- 查找密钥名称
1
| kubectl get secrets | grep rails-secret
|
- 保存为 yaml 文件
1
| kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > secrets.yaml
|
- 下载备份文件
Omnibus 实例启动
- 根据 helm 安装版本启动 docker 镜像,版本必须一致,迁移完再考虑升级最新版
1 2 3 4 5 6 7 8 9 10 11
| export GITLAB_HOME=$HOME/gitlab
sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB_HOME/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
|
恢复
以下 gitlab 均表示 omnibus 实例
恢复之前需要先启动一遍
密钥恢复
- 先恢复密钥文件到 gitlab 中
- 使用 yaml 转 json 工具 https://json.im/json2/yaml2json.html
- 复制 json 到
/etc/gitlab/gitlab-secrets.json
文件 gitlab_rails
节点下
1 2 3 4 5 6 7 8
| "gitlab_rails": { "secret_key_base": "", "db_key_base": "", "otp_key_base": "", "encrypted_settings_key_base": "", "openid_connect_signing_key": "", "ci_jwt_signing_key": "" },
|
minio 配置
- 编辑 gitlab.rb 配置文件
1
| vim /etc/gitlab/gitlab.rb
|
- 启用 object_store 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| gitlab_rails['object_store']['enabled'] = true gitlab_rails['object_store']['connection'] = { 'provider' => 'AWS', 'region' => 'eu-west-1', 'aws_access_key_id' => 'access_key_id', 'aws_secret_access_key' => 'secret_access_key', 'endpoint' => 'minio地址', 'path_style' => true } gitlab_rails['object_store']['storage_options'] = {} gitlab_rails['object_store']['proxy_download'] = false gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts' gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = 'gitlab-external-diffs' gitlab_rails['object_store']['objects']['lfs']['bucket'] = 'gitlab-lfs-objects' gitlab_rails['object_store']['objects']['uploads']['bucket'] = 'gitlab-uploads' gitlab_rails['object_store']['objects']['packages']['bucket'] = 'gitlab-packages' gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = 'gitlab-dependency-proxy' gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = 'gitlab-terraform-state'
|
- 重新配置,重启
1 2
| sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
|
数据文件恢复
- 复制备份文件到 omnibus 实例,data 目录中 backups 文件夹,容器中目录是
/var/opt/gitlab/backups
,本地目录对应 $GITLAB_HOME/data/backups
- 停止 gitlab 相关服务
1 2 3 4
| sudo gitlab-ctl stop puma sudo gitlab-ctl stop sidekiq # Verify sudo gitlab-ctl status
|
- 恢复 gitlab 备份,根据时间戳
1
| sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
|
- 重新配置,重启,检查 gitlab
1 2 3
| sudo gitlab-ctl reconfigure sudo gitlab-ctl restart sudo gitlab-rake gitlab:check SANITIZE=true
|