gitlab 迁移 gitlab 升级 gitlab docker 部署,你要的 这里都有


gitlab 迁移 gitlab 升级 gitlab docker 部署,你要的 这里都有

1. 说明

1.1 为什么选择docker方式部署gitlab

gitlab 还是需要定期升级滴,还有程序尽量要容器化部署,降低维护的难度,以及不用把自己的程序和操作系统绑定
这个教程会把传统方式搭建的gitlab 迁移到docker中,之后通过逐级升级的方式升级gitlab版本到最新

2. 具体的步骤

  1. 旧gitlab服务器创建备份文件
  2. 新的服务器安装docker环境,并且启动和旧gitlab一样版本的docker版giltab
  3. 把旧gitlab备份文件 导入到新服务器的docker容器中
  4. 根据gitlab的官方升级方法,逐级升级新服务器的docker镜像的版本号(建议升级前做个系统快照,便于回滚)
  5. 验收,以及把旧服务器的IP绑定到新服务器上

2.1 旧gitlab服务器创建备份文件

#运行备份数据到命令,备份文件默认在/var/opt/gitlab/backups ,如果没有请查找/etc/gitlab/gitlab.rb backup相关配置
#
gitlab-rake gitlab:backup:create
#有两个文件需要手工备份
#gitlab.rb路径:/etc/gitlab/gitlab.rb
#gitlab-secrets.json路径:/etc/gitlab/gitlab-secrets.json
#备份文件名称为1654270645_2022_06_03_12.0.3_gitlab_backup.tar

看截图

2.2 新的服务器安装docker环境,并且启动和旧gitlab一样版本的docker版giltab

2.2.1 安装docker和docker-compose

官方地址安装

yum remove docker-common -y
cd /etc/yum.repos.d/ 
wget https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce 
systemctl enable docker
systemctl start docker

docker-compose 安装

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
-o  /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

2.2.2 docker的具体配置

建议先去官方看看,https://docs.gitlab.com/ee/install/docker.html

mkdir /usr/local/gitlab
cd gitlab
mkdir backup config data logs ssl
cat << "EOF" > docker-compose.yaml
version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ce:12.0.3-ce.0'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        letsencrypt['enable'] = false
        nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
        nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
        nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
        gitlab_rails['manage_backup_path'] = true
        gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
      - './ssl:/etc/gitlab/ssl'
      - './backup:/var/opt/gitlab/backups'
    shm_size: '256m'
EOF

#自己准备证书,证书位置请放到当前目录的 ssl/gitlab.example.com.crt 和 ssl/gitlab.example.com.key
# 为啥要自备,因为gitlab不建议放公网,自带的let's encrypt方式申请证书,需要公网访问,不安全
docker-compose up -d

2.3 把旧gitlab备份文件 导入到新服务器的docker容器中

把旧服务器的备份文件 例如 1654270645_2022_06_03_12.0.3_gitlab_backup.tar 放到 对应的文件夹内

cd /usr/local/gitlab
cd backup
mv xxx/1654270645_2022_06_03_12.0.3_gitlab_backup.tar .

docker exec -it gitlab_web_1 /bin/bash
gitlab-rake gitlab:backup:restore BACKUP=1654270645_2022_06_03_12.0.3 #注意 恢复时需要指定此前备份的名称(但是不需要写名称的_gitlab_backup.tar后缀)
#从旧服务器上复制/etc/gitlab/gitlab.rb 和 /etc/gitlab/gitlab-secrets.json 到容器中
#退出容器,重启容器

4. 根据gitlab的官方升级方法,逐级升级新服务器的docker镜像的版本号

4.1 官方的关于版本升级的说明 https://docs.gitlab.com/ee/update/index.html#upgrade-paths

比如当前版本是12.0.3 ,需要先升级到12.0.12 然后12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 ||||| -> 14.6.2 -> 14.9.4 -> 14.10.3 -> 15.0.0
知道了版本号,然后去hub.docker.com的gitlab/gitlab-ce项目查找对应的镜像名称

4.2 升级

找到具体每个版本的镜像名,修改docker-compose.yaml中的镜像名称,
然后docker-compose down && docker-compose up -d
查看docker的日志docker logs gitlab_web_1 -f ,日志正常后,打开网站看看,没有毛病后,继续修改docker-comose.yaml 中的镜像名称,继续重启容器