从 Helm Chart 迁移到 Linux 包
从 Helm 安装实例迁移到 Linux 包 (Omnibus) 安装实例:
- 进入管理中心 (),并选择 概览 > 组件 以检查您当前的极狐GitLab 版本。
- 准备一台干净的机器并安装 Linux 包,版本与您的 GitLab Helm chart 版本匹配。
- 在您的 GitLab Helm chart 实例上,在迁移之前验证 Git 仓库的完整性
- 创建您的 GitLab Helm chart 实例的备份,并同时确保备份 secret也是如此。
- 在您的 Omnibus GitLab 实例上备份
/etc/gitlab/gitlab-secrets.json
。 - 在运行
kubectl
命令的工作站上安装 yq 工具(4.21.1 或更高版本)。 - 在您的工作站上创建一个
/etc/gitlab/gitlab-secrets.json
文件的副本。 -
运行以下命令以从 GitLab Helm 图表实例中获取 secrets。 将
GITLAB_NAMESPACE
和RELEASE
替换为适当的值: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
- 结果是
gitlab-secrets-updated.json
,您可以使用它来替换 Omnibus GitLab 实例上的旧版本/etc/gitlab/gitlab-secrets.json
。 -
替换
/etc/gitlab/gitlab-secrets.json
后,重新配置 Omnibus GitLab:sudo gitlab-ctl reconfigure
- 在 Omnibus 实例中,配置 对象存储,并通过测试 LFS、产物、上传文件等来确保其正常工作。
- 如果使用 Container Registry,请单独配置其对象存储。它不支持使用统一的对象存储。
-
将连接到 Helm chart 实例的对象存储中的数据与连接到 Omnibus GitLab 的新存储同步。一些注意事项:
- 对于 S3 兼容的存储,使用
s3cmd
实用程序复制数据。 - 如果打算在您的 Omnibus GitLab 实例中使用 S3 兼容的对象存储,比如 MinIO,你应该配置指向你的 MinIO 的选项
endpoint
并在/etc/gitlab/gitlab.rb
中将path_style
设置为true
。 - 您可以将旧的对象存储与新的 Omnibus GitLab 实例一起使用。 在这种情况下,您不需要在两个对象存储之间同步数据。 但是,如果您使用的是内建 MinIO 实例,则在卸载 GitLab Helm chart 时可能会取消配置存储。
- 对于 S3 兼容的存储,使用
- 将 GitLab Helm 备份复制到 Omnibus GitLab 实例上的
/var/opt/gitlab/backups
,然后执行恢复。 - 恢复完成后,运行 doctor Rake tasks 确保 secret 有效。
- 一切都经过验证后,您可以卸载 GitLab Helm chart 实例。