升级 GitLab 安装
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed
升级 GitLab 是一个相对直接的过程,但复杂性可能会根据以下因素增加:
- 您使用的安装方法。
- 您的 GitLab 版本有多旧。
- 您是否要升级到主版本。
如果可能,您应该在更新生产实例之前先在测试环境中测试升级。您的测试环境应尽可能模拟生产环境。
请务必阅读整页内容,因为它包含了与每种升级方法相关的信息。
升级 GitLab
要升级 GitLab:
- 创建一个升级计划来记录您的升级步骤。
- 熟悉维护策略文档和当前维护的版本。
- 阅读您要跳过的版本的发布文章。 特别是关于弃用、移除和升级的重要说明。
- 使用升级路径工具,确定您应该采取的升级路径。 如果您的升级路径包含必需的升级停点,您可能需要执行多次升级才能从当前版本迁移到目标版本。 如果相关,请检查目标 GitLab 版本的操作系统兼容性。
- 检查后台迁移。所有迁移必须在每次升级前完成运行。 您必须在主要版本和次要版本之间分散升级,以便为后台迁移完成留出时间。
- 首先在测试环境中测试您的升级,并制定一个回滚计划, 以减少计划外停机和长时间停机的风险。
- 如果您的起始版本中可用,请在升级期间考虑开启维护模式。
- 升级前,查看不同 GitLab 版本的更改以确保兼容性:
- 执行升级前检查。
- 暂停正在运行的 CI/CD 管道和作业。
- 如果相关,请遵循附加功能的升级步骤:
- 遵循基于您的安装方法的升级步骤。
- 如果您的 GitLab 实例有任何关联的 runner,请将它们升级到与当前 GitLab 版本匹配。 此步骤确保与 GitLab 版本的兼容性。
- 如果您在升级过程中遇到问题,获取支持。
- 如果您启用了维护模式,请禁用维护模式。
- 恢复正在运行的 CI/CD 管道和作业。
- 执行升级后检查。
根据安装方法升级
根据安装方法和您的 GitLab 版本,有多种官方方式可以升级 GitLab:
作为 GitLab 升级的一部分,Linux 软件包升级指南包含了升级 Linux 软件包实例的具体步骤。
GitLab 为社区版和企业版都提供了官方 Docker 镜像,它们基于 Linux 软件包。 请参阅如何使用 Docker 安装 GitLab。
- 从源码升级社区版和企业版:从源码升级社区版和企业版的指南。
- 补丁版本指南包含了补丁版本所需的步骤,例如从 15.2.0 到 15.2.1,适用于社区版和企业版。
过去我们使用单独的文档进行升级说明,但我们已切换到使用单个文档。 旧的升级指南仍然可以在 Git 仓库中找到:
升级前和升级后检查
在升级前后立即执行升级前和升级后检查,以确保 GitLab 的主要组件正常工作:
-
sudo gitlab-rake gitlab:check -
确认加密的数据库值可以解密:
sudo gitlab-rake gitlab:doctor:secrets -
在 GitLab UI 中,检查:
- 用户可以登录。
- 项目列表可见。
- 项目问题和合并请求可访问。
- 用户可以从 GitLab 克隆仓库。
- 用户可以向 GitLab 推送提交。
-
对于 GitLab CI/CD,检查:
- Runner 会接收作业。
- Docker 镜像可以从注册表中推送和拉取。
-
如果使用 Geo,在主站点和每个次要站点上运行相关检查:
sudo gitlab-rake gitlab:geo:check -
如果使用 Elasticsearch,验证搜索是否成功。
如果出现问题,获取支持。
升级期间的 CI/CD 管道和作业
如果您在 GitLab Runner 处理作业时升级 GitLab 实例,则跟踪更新会失败。 当 GitLab 恢复在线时,跟踪更新应该会自动修复。但是,根据错误的不同, GitLab Runner 会重试或最终终止作业处理。
至于制品,GitLab Runner 会尝试上传它们三次,之后作业最终会失败。
为解决上述两种情况,建议在升级前执行以下操作:
-
规划您的维护。
-
暂停您的 runner,或通过将以下内容添加到您的
/etc/gitlab/gitlab.rb来阻止新作业启动:nginx['custom_gitlab_server_config'] = "location = /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"然后使用以下命令重新配置 GitLab:
sudo gitlab-ctl reconfigure -
等待所有作业完成。
-
升级 GitLab。
-
升级 GitLab Runner 到与您的 GitLab 版本相同的版本。 两个版本应该相同。
-
恢复您的 runner 并通过还原之前的
/etc/gitlab/gitlab.rb更改来阻止新作业启动。
版本间升级
GitLab 有两种版本:社区版(采用 MIT 许可证)和企业版, 它建立在社区版之上,并包含额外功能,主要面向拥有超过 100 个用户的组织。
在下一节中,您可以找到一些帮助您更改 GitLab 版本的指南。
附加功能的升级步骤
某些 GitLab 功能有额外的步骤。
外部 Gitaly
在升级应用服务器之前,将 Gitaly 服务器升级到新版本。这可以防止应用服务器上的 gRPC 客户端发送旧版 Gitaly 不支持的 RPC。
Geo
如果您使用 Geo:
GitLab agent for Kubernetes
如果您有与 GitLab 连接的 Kubernetes 集群,升级您的 GitLab agents for Kubernetes 以匹配您的新 GitLab 版本。
Elasticsearch
在更新 GitLab 之前,通过检查待处理的迁移确认高级搜索迁移已完成。
更新 GitLab 后,如果新版本破坏兼容性,您可能需要升级Elasticsearch。 更新 Elasticsearch 不在 GitLab 支持范围内。
获取支持
如果出现问题:
- 复制任何错误并收集任何日志以便以后分析,然后回滚到最后一个工作版本。 您可以使用以下工具帮助您收集数据:
获取支持:
- 联系 GitLab 支持,如果您有客户成功经理,也请联系他们。
- 如果情况符合条件且您的计划包含紧急支持,请创建紧急工单。