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
分享
二维码
海报
GitLab 10.4.0 迁移到 Docker 版本 GitLab 14.4.1
[TOC] 一、前言 需要注意自己版本是 CE还是EE版本,不同版本不能混用 我这里的是 EE 版本,CE 社区版,EE 企业版 1.1、版本 类型 版本 备注 GitLab E……
<<上一篇
下一篇>>
文章目录
关闭
目 录