GitLab 10.4.0 迁移到 Docker 版本 GitLab 14.4.1
[TOC]
一、前言
- 需要注意自己版本是 CE还是EE版本,不同版本不能混用
- 我这里的是 EE 版本,CE 社区版,EE 企业版
1.1、版本
类型 | 版本 | 备注 |
---|---|---|
GitLab EE | 11.3.0 | 传统部署 |
GitLab EE | 12.10.0 | 容器部署 |
1.2、迁移流程
- 备份成功必须恢复到相同版本中的 GitLab 中,跨版本无效
graph LR
A[旧 GitLab 备份] -->B(恢复至新环境的同版本gitlab)
B -->C(验证)
C -->D(升级新环境的gitlab)
D -->E(验证)
二、启动 GitLab 容器
1) 创建文件夹
mkdir -p /data/compose/gitlab
2) 创建容器网络
docker network create -d bridge --subnet 172.254.254.0/26 aka-network
3) 创建 Docker Compose 文件
cat <<'EOF'> docker-compose.yml
version: '2'
services:
gitlab:
# 版本更新依次升级
image: gitlab/gitlab-ee:10.4.0-ee.0
#image: gitlab/gitlab-ee:11.11.0-ee.0
#image: gitlab/gitlab-ee:12.10.14-ee.0
#image: gitlab/gitlab-ee:13.0.14-ee.0
#image: gitlab/gitlab-ee:13.12.12-ee.0
#image: gitlab/gitlab-ee:14.0.11-ee.0
#image: gitlab/gitlab-ee:14.1.7-ee.0
#image: gitlab/gitlab-ee:14.4.1-ee.0
mem_limit: 8192m
container_name: gitlab
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.akiraka.net'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
# 比如下面的电子邮件的配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.sina.net"
gitlab_rails['smtp_port'] = "578"
gitlab_rails['smtp_user_name'] = "devops@aka.net"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'devops@aka.net'
ports:
- 80:80
volumes:
- /etc/localtime:/etc/localtime
- /data/gitlab/config:/etc/gitlab
- /data/gitlab/data:/var/opt/gitlab
- /data/gitlab/logs:/var/log/gitlab
- /data/gitlab/backup:/var/opt/gitlab/backups
#- /data/gitlab/license/license.rb:/opt/gitlab/embedded/service/gitlab-rails/ee/app/models/license.rb
#- /data/gitlab/license/license_key.pub:/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub
networks:
default:
external:
name: aka-network
EOF
4) 启动 GitLab
cd /data/compost/gitlab && docker-compose up -d
三、备份原 GitLab 数据
- 如果是破解的许可证,必须要移除许可证进行升级,否则设置页面会出现502页面等问题
- 如果升级失败情况,先进入正常版本,然后管理后台下的迁移任务,查看迁移进度,必须等待队列全部完成,否则会导致新版本无法正常
3.1、查找备份路径
- 默认在 /var/opt/gitlab/backups
[root@AKA ~]# cat /etc/gitlab/gitlab.rb |grep 'backup_path'
# gitlab_rails['manage_backup_path'] = true
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
3.2、备份数据
1) 停止相关数据服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2) 备份数据
gitlab-rake gitlab:backup:create
3) 安全密钥文件(重要)
cp /etc/gitlab/gitlab-secrets.json /data/gitlab/backup
4) 拷贝文件到容器挂载目录
cp /var/opt/gitlab/backups/* /data/gitlab/backup
四、恢复备份文件到新环境
1) 进入容器操作
docker exec -it gitlab bash
2) 止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
3) 去备份目录,恢复数据
cd /var/opt/gitlab/backups
4) 文件列表
root@31fc8d4e8d3f:/var/opt/gitlab/backups# ls
1598847450_2020_08_31_12.10.14-ee_gitlab_backup.tar gitlab-secrets.json
5) 恢复备份,恢复文件格式应当像以下这样,然后一路 yes
gitlab-rake gitlab:backup:restore BACKUP=1598847450_2020_08_31_12.10.14-ee
6) 恢复安全文件
cp -f gitlab-secrets.json /etc/gitlab/gitlab-secrets.json
7) 重新启动相关服务
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
8) 去weib界面查看代码是否迁移成功
http://gitlab.akiraka.net
9) 重启服务
gitlab-ctl restart
10) 验证是否迁移
gitlab-rake gitlab:check SANITIZE=true
五、升级 GitLab 至最新版本
1) 进入编排目录
cd /data/compose/gitlab
2) 修改版本
- 注释 gitlab/gitlab-ee:10.4.0-ee.0 启用 gitlab/gitlab-ee:11.11.0-ee.0 每次升级ok 以此类推
- 可以大版本升级,但是不可以跨大版本升级
# 停止容器
docker-compose down
# 修改版本
image: gitlab/gitlab-ee:10.4.0-ee.0
#image: gitlab/gitlab-ee:11.11.0-ee.0
#image: gitlab/gitlab-ee:12.10.14-ee.0
2) 启动容器
- 每次升级成功去 web 界面看看是否正常,一步步来
- 到此迁移完毕
# 启动容器
docker-compose up -d
六,关闭普罗米修斯
- 关闭 Prometheus 监控
# 编辑 config/gitlab.rb 文件添加以下内容
node_exporter['enable'] = false
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
版权声明:
作者:Akiraka
链接:https://www.akiraka.net/linux/1235.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
GitLab 10.4.0 迁移到 Docker 版本 GitLab 14.4.1
[TOC]
一、前言
需要注意自己版本是 CE还是EE版本,不同版本不能混用
我这里的是 EE 版本,CE 社区版,EE 企业版
1.1、版本
类型
版本
备注
GitLab E……
文章目录
关闭
共有 0 条评论