从 Helm Chart 迁移到 Linux 包

从 Helm 安装实例迁移到 Linux 包 (Omnibus) 安装实例:

  1. 进入管理中心 (),并选择 概览 > 组件 以检查您当前的极狐GitLab 版本。
  2. 准备一台干净的机器并安装 Linux 包,版本与您的极狐GitLab Helm chart 版本匹配。
  3. 在您的极狐GitLab Helm chart 实例上,在迁移之前验证 Git 仓库的完整性
  4. 创建您的极狐GitLab Helm chart 实例的备份,并同时确保备份 secret 也是如此。
  5. 在您的 Linux 软件包实例上备份 /etc/gitlab/gitlab-secrets.json
  6. 在运行 kubectl 命令的工作站上安装 yq 工具(4.21.1 或更高版本)。
  7. 在您的工作站上创建一个 /etc/gitlab/gitlab-secrets.json 文件的副本。
  8. 运行以下命令以从极狐GitLab Helm 图表实例中获取 secret。 将 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
    
  9. 结果是 gitlab-secrets-updated.json,您可以使用它来替换 Linux 软件包实例上的旧版本 /etc/gitlab/gitlab-secrets.json
  10. 替换 /etc/gitlab/gitlab-secrets.json 后,重新配置 Linux 软件包实例:

    sudo gitlab-ctl reconfigure
    
  11. 在 Linux 软件包实例中,配置对象存储,并通过测试 LFS、产物、上传文件等来确保其正常工作。
  12. 如果使用 Container Registry,请单独配置其对象存储。它不支持使用统一的对象存储。
  13. 将连接到 Helm chart 实例的对象存储中的数据与连接到 Linux 软件包实例的新存储同步。一些注意事项:

    • 对于 S3 兼容的存储,使用 s3cmd 实用程序复制数据。
    • 如果打算在您的 Linux 软件包实例中使用 S3 兼容的对象存储,比如 MinIO,您应该配置指向您的 MinIO 的选项 endpoint 并在 /etc/gitlab/gitlab.rb 中将 path_style 设置为 true
    • 您可以将旧的对象存储与新的 Linux 软件包实例一起使用。在这种情况下,您不需要在两个对象存储之间同步数据。但是,如果您使用的是内建 MinIO 实例,则在卸载极狐GitLab Helm chart 时可能会取消配置存储。
  14. 将极狐GitLab Helm 备份复制到 Linux 软件包实例上的 /var/opt/gitlab/backups,然后执行恢复。
  15. 恢复完成后,运行 doctor Rake tasks 确保 secret 有效。
  16. 一切都经过验证后,您可以卸载极狐GitLab Helm chart 实例。