从 Helm chart 迁移到 Linux 包

从 Helm 安装的实例迁移到软件包(Omnibus)安装的实例,您需要:

  1. 在左侧导航栏,在底部,选择管理中心
  2. 选择概览 > 组件以检查当前您的极狐GitLab 实例版本。
  3. 准备一个干净的机器并用软件包安装与极狐GitLab Helm chart 相同版本的极狐GitLab 实例
  4. 在迁移之前,在极狐GitLab Helm chart 实例上验证 Git 仓库的完整性
  5. 创建极狐GitLab Helm chart 实例备份,且要确保同时备份了密钥
  6. 在您的 Linux 软件包安装的实例服务器上备份 /etc/gitlab/gitlab-secrets.json 文件。
  7. 在您运行 kubectl 命令的服务器上安装 yq 工具(版本高于 4.21.1)。
  8. 在您的工作站上创建 /etc/gitlab/gitlab-secrets.json 文件的备份。
  9. 运行以下命令以从您的极狐GitLab Helm chart 实例上获取密钥。用合适的值替代 GITLAB_NAMESPACERELEASE

    kubectl get secret -n GITLAB_NAMESPACE RELEASE-rails-secret -ojsonpath='{.data.secrets\.yml}' | yq '@base64d | from_yaml | .production' -o json > rails-secrets.json
    yq eval-all 'select(filename == "gitlab-secrets.json").gitlab_rails = select(filename == "rails-secrets.json") | select(filename == "gitlab-secrets.json")' -ojson  gitlab-secrets.json rails-secrets.json > gitlab-secrets-updated.json
    
  10. 结果存放在 gitlab-secrets-updated.json,您可以用此文件的内容替换您 Linux 软件包实例中 /etc/gitlab/gitlab-secrets.json 文件的内容。
  11. 替换完 /etc/gitlab/gitlab-secrets.json 文件后,重新配置您的 Linux 软件包实例:

    sudo gitlab-ctl reconfigure
    
  12. 在 Linux 软件包实例上,配置对象存储,并通过测试 LFS、制品、上传等功能确保实例正常工作。
  13. 如果您在用容器镜像仓库,要为其单独配置对象存储。它并不支持统一的对象存储。
  14. 将连接到 Helm chart 实例的对象存储和连接到 Linux 软件包实例的对象存储进行数据同步。需要注意:
    • 对兼容 S3 的存储来说,使用 s3cmd 工具来拷贝数据。
    • 如果您计划在您的 Linux 软件包实例上使用 S3 兼容的对象存储,比如 MinIO,您应该配置选项端点以指向您的 MinIO,并且在 /etc/gitlab/gitlab.rb 中将 path_style 设置为 true
    • 您还可以在 Linux 软件包实例上复用您的对象存储。在此情况下,您就不需要在两个对象存储上同步数据了。然而,如果您使用的是内置的 MinIO 实例,当您卸载极狐GitLab Helm chart 时,存储可能会被取消配置。
  15. 将极狐GitLab Helm 备份拷贝到 Linux 软件包实例上的 /var/opt/gitlab/backups 目录下,然后执行恢复
  16. 完成恢复后,运行docker Rake 任务来确保密钥是正确的。
  17. 一切验证完成后,卸载您的极狐GitLab Helm chart 实例。