gitlab(14.10.5 - 16.3.6)升级历程
自说明
对于gitlab的安装部署以及升级, 我是不熟悉的, 并且对于linux的命令, 之前也只是熟悉一些常用的命令, 在上一次对另外一个系统进行整体应用的迁移后, 受益匪浅。借此 ,非常的开心有机会对gitlab进行升级(14.10.5 - 16.3.6) , 本文将记录在迁移过程中注意事项, 遇到的问题以及使用的命令。
方案
目前线上gitlab使用docker进行安装的, 将核心数据进行了对应目录的挂载。事情就变得简单起来了, 只需要将对应版本gitlab镜像启动, 同样挂载到以前的数据目录即可。因为gitlab的升级不能跨版本, 官网给出了版本升级路线Upgrade Path (gitlab-com.gitlab.io)。这样也有一个问题 , 万一升级过程中失败了 , 我想回退到原来的版本,但是数据已经被污染了。所以 , 我们可以将原有的挂载目录完整的复制一份, 在这一份数据进行升级, 升级完后将目录名称进行修改即可。
升级过程
准备docker-compose文件内容
version: '3.4'
x-logging: &logging
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
services:
gitlab:
image: gitlab/gitlab-ce:15.0.5-ce.0(需要修改)
container_name: gitlab-15.0.5(需要修改)
restart: always
hostname: xxxx(需要修改)
environment:
TZ: Asia/Shanghai
GITLAB_OMNIBUS_CONFIG:
external_url "xxxxx"(需要修改)
gitlab_rails['gitlab_shell_ssh_port'] = 23022
gitlab_rails['backup_keep_time'] = 2592000
nginx['client_max_body_size'] = 0
nginx['enable'] = true
nginx['listen_port'] = 80
nginx['listen_https'] = false
ports:
- '80:80'
- '23022:22'
volumes:
- '/data/gitlab2/config:/etc/gitlab'(需要修改)
- '/data/gitlab2/logs:/var/log/gitlab'(需要修改)
- '/data/gitlab2/data:/var/opt/gitlab'(需要修改)
- '/data/gitlab2/backups:/var/opt/gitlab/backups'(需要修改)
- '/data/gitlab2/cron.d:/etc/cron.d'(需要修改)
logging: *logging
以上备注需要修改的地方, 都是在升级的过程中需要根据自身的环境进行对应修改的地方
接着就是启停docker-compose文件
docker-compose ps
docker-compose stop xxxx
docker-compose up -d
反复修改docker.compose脚本中的镜像版本 , 直至升级为目标版本
检查gitlab的状态
每次升级完gitlab后,都需要进行检查
0.gitlab-ctl status()
1.gitlab-rake gitlab:check()
2.gitlab-rake gitlab:doctor:secrets()
3.验证人员进行ui验证,登录上传下载代码,cicd整体流程()
注意:
**跨版本升级时, 一定要将当前整个挂载文件进行备份, 防止升级失败 **
在进行大版本的升级时, 会出现时间比较久的情况, 请耐心的等待, 一定不要急。
在升级15.11.13升级到16.1.5的时候, 出现了无法登录的问题, 当时心里有两个选择, 一个是就升级到15.11.13版本, 但是发现还是存在大的漏洞, 我最开始也是这样去做的, 升级到15.11.13就停下了, 作为可提供服务的版本。但是呢, 心里就是难受, 所以在面对16.1.5的异常问题(去查看了github的issue, 大家讨论过这个问题), 我选择了继续升级16.3.6版本,好的结果是16.3.6版本功能一切正常。
数据备份
根据自己的数据备份要求进行相应的备份。