从 Linux 包迁移到 Helm chart

本指南将帮助您从基于软件包的极狐GitLab 安装迁移到 Helm chart。

前提条件

在迁移之前,必须满足一些前提条件:

  • 基于包的极狐GitLab 实例必须已启动并正在运行。运行 gitlab-ctl status 并确认没有服务报告 down 状态。
  • 在迁移之前验证完整性是一个很好的做法。
  • 需要基于 Helm chart 的部署,应运行与基于包的安装相同的极狐GitLab 版本。
  • 您需要设置基于 Helm chart 的部署将使用的对象存储。对于生产用途,我们建议您使用外部对象存储并准备好访问它的登录凭据。如果您使用内建的 MinIO 服务,阅读文档了解如何从中获取登录凭据。

迁移步骤

  1. 将任何现有文件(上传文件、产物、LFS 对象)从基于包的安装迁移到对象存储:

    1. 修改 /etc/gitlab/gitlab.rb 文件并配置对象存储:

      • 上传文件
      • 产物
      • LFS
      • 软件包

      此处必须是基于 Helm chart 的部署所连接到的同一个对象存储服务。

    2. 运行重新配置以应用更改:

      sudo gitlab-ctl reconfigure
      
    3. 将现有产物迁移到对象存储:

      sudo gitlab-rake gitlab:artifacts:migrate
      
    4. 将现有 LFS 对象迁移到对象存储:

      sudo gitlab-rake gitlab:lfs:migrate
      
    5. 将现有软件包迁移到对象存储:

      gitlab-rake gitlab:packages:migrate
      
    6. 将现有上传文件迁移到对象存储:

      sudo gitlab-rake gitlab:uploads:migrate:all
      
    7. 访问基于软件包的 GitLab 实例并确保上传文件可用。例如检查用户、群组和项目头像是否良好呈现,添加到议题的图像和其它文件是否正确加载等。

  2. 创建备份 tarball 并排除已经迁移的上传文件:

    sudo gitlab-rake gitlab:backup:create SKIP=artifacts,lfs,packages,uploads
    

    备份文件将存储在 /var/opt/gitlab/backups 下,除非您明确更改它。

  3. 从基于包的安装恢复 到 Helm chart,从 secret 开始。您需要将 /etc/gitlab/gitlab-secrets.json 的值迁移到 Helm 将使用的 YAML 文件中。
  4. 重新启动所有 pod 以确保应用更改:

    kubectl delete pods -lrelease=<helm release name>
    
  5. 访问基于 Helm 的部署并确认基于包的安装中存在的项目、群组、用户、议题等已恢复。此外,验证上传的文件(头像、上传到议题的文件等)是否加载正常。