版本 3.16 和 3.18 支持落后于官方版本的 GitLab 版本。将 GitLab 升级到最新官方版本需要进行超过 10 次的升级才能完成。在升级到 4.0 后,产品不提供自动升级到 17.8.5 的选项。本解决方案阐明了如何从 14.0.12 升级到 17.8.5。
考虑到版本差距较大,我们采用数据迁移的方式进行升级。升级所需的时间会根据 GitLab 数据的大小而显著不同。完成升级可能需要几天时间,因此有必要提前评估维护窗口。
测试数据:包括 3 个项目(一个大型项目 666MB,2 个空项目),备份文件大小为 668MB,升级时间为 8 小时。
数据迁移路径 根据 官方升级路径 文档,迁移路径如下:
备份平台部署的 GitLab,并将其恢复到单一镜像部署的 GitLab,然后使用单一镜像升级到 17.8.5,最后将数据备份恢复到平台部署的 17.8.5 实例。
将以下 yaml 文件应用到 gitlab 部署的命名空间,该 yaml 已将备份 pvc(backup-pvc)挂载到备份目录(如果您在升级过程中需要访问 gitlab 实例,则需要替换 yaml 中的 IP 和 NodePort 端口)。
在恢复过程中可能会发生数据库相关的错误,必须是所有者
和不存在
是预期的行为,详情请参阅 (https://gitlab.com/gitlab-org/gitlab/-/issues/266988)。
使用单一模式将 gitlab 升级到 17.8.5。您需要逐个替换升级路径中的 gitlab 镜像,直到升级到 17.8.5。
升级路径:14.0.12 → 14.3.6 → 14.9.5 → 14.10.5 → 15.0.5 → 15.4.6 → 15.11.13 → 16.3.9 → 16.7.10 → 16.11.10 → 17.3.6 → 17.5.5 → 17.8.5
在 gitlab 17.8.5 中,添加以下值以启用 gitlab 17.8.5 的工具箱:
在恢复过程中可能会发生数据库相关的错误,必须是所有者
和不存在
是预期的行为,详细信息请参阅 (https://gitlab.com/gitlab-org/gitlab/-/issues/266988)
在执行备份数据时,任务运行者容器被终止,需要为任务运行者容器添加请求和限制资源(至少 2c4g),然后重启任务运行者并重新执行备份。
将备份恢复到由平台部署的 17.8.5 时,工具箱容器被终止,需要为工具箱容器添加请求和限制资源(至少 2c4g)。
升级备份不包括外部附件图像和头像,因此升级后页面无法显示附件图像和上传的头像。您可以用 14.0.12 的镜像存储 PVC 替换 17.8.5 的 PVC。