升级极狐GitLab
升级极狐GitLab 是一个相对简单的过程,但复杂性可能会根据以下因素增加:
- 您所使用的安装方法。
- 您的极狐GitLab 版本的老旧程度。
- 是否升级到主要版本。
如果可能,您应该在测试环境中先测试升级,然后再更新生产实例。您的测试环境应尽可能地模拟生产环境。
请务必阅读整个页面,因为它包含与每种升级方法相关的信息。
升级极狐GitLab
要升级极狐GitLab:
- 创建一个升级计划以记录您的升级步骤。
- 熟悉维护政策文档。
- 阅读您将要跳过的版本的发布帖子,特别是弃用、移除和关于升级的重要注意事项。
- 确定您应该采取的升级路径。如果您的升级路径包括必要的升级停顿,您可能需要执行多次升级以从当前版本移动到目标版本。如有相关,请检查目标极狐GitLab 版本的操作系统兼容性。
- 检查后台迁移。所有迁移必须在每次升级之前完成。您必须在主要和次要版本之间分散升级,以允许后台迁移完成。
- 首先在测试环境中测试您的升级,并制定一个回滚计划,以减少计划外中断和延长停机时间的风险。
- 如果在您开始的版本中可用,考虑在升级期间启用维护模式。
- 在升级之前,查阅极狐GitLab 各个版本的更改以确保兼容性:
- 执行预升级检查。
- 暂停运行中的 CI/CD 流水线和作业。
- 如果相关,请遵循额外功能的升级步骤:
- 根据您的安装方法遵循升级步骤。
- 如果您的极狐GitLab 实例与任何 runners 关联,请将其升级以匹配当前的极狐GitLab 版本。此步骤可确保与极狐GitLab 版本的兼容性。
- 如果在升级中遇到问题,请获取支持。
- 如果您启用了维护模式,请禁用维护模式。
- 取消暂停运行中的 CI/CD 流水线和作业。
- 执行升级后的检查。
根据安装方法升级
根据安装方法和您的极狐GitLab 版本,有多种官方方式升级极狐GitLab:
::Tabs
:::TabTitle Linux 软件包(Omnibus)
作为极狐GitLab 升级的一部分,Linux 软件包升级指南包含升级 Linux 软件包实例的具体步骤。
:::TabTitle Helm chart(Kubernetes)
极狐GitLab 可以使用 Helm 部署到 Kubernetes 集群中。对于生产部署,设置遵循云原生混合指导,其中云原生极狐GitLab 的无状态组件在 Kubernetes 中运行,极狐GitLab Helm chart,与使用 Linux 软件包的有状态组件在计算虚拟机中部署。
使用版本映射从 chart 版本到极狐GitLab 版本以确定升级路径。
遵循带停机的多节点升级在云原生混合设置中执行升级。
完整的云原生部署不支持生产。然而,如何升级此类环境的说明在单独的文档中。
:::TabTitle Docker
极狐GitLab 提供了 Community 版和 Enterprise 版的官方 Docker 镜像,且它们基于 Omnibus 软件包。查看如何使用 Docker 安装极狐GitLab。
:::TabTitle 自编译(源代码)
- 从源代码升级基础版和企业版 - 从源代码升级基础版和企业版的指南。
- 补丁版本指南包括补丁版本所需的步骤,例如从 15.2.0 到 15.2.1,并适用于基础版和企业版。
过去我们使用单独的文档进行升级说明,但现在我们已经切换为使用单个文档。旧的升级指南仍然可以在 Git 仓库中找到:
::EndTabs
升级前和升级后的检查
在升级前后立即执行预升级和升级后的检查,以确保极狐GitLab 的主要组件正常工作:
-
sudo gitlab-rake gitlab:check
-
确认加密的数据库值可以解密:
sudo gitlab-rake gitlab:doctor:secrets
- 在极狐GitLab UI 中,检查:
- 用户可以登录。
- 项目列表可见。
- 项目问题和合并请求可以访问。
- 用户可以从极狐GitLab 克隆仓库。
- 用户可以向极狐GitLab 推送提交。
- 对于极狐GitLab CI/CD,检查:
- runners 能够接收作业。
- Docker 镜像可以从注册表中推送和拉取。
-
如果使用 Geo,请在主节点和每个次节点上运行相关检查:
sudo gitlab-rake gitlab:geo:check
- 如果使用 Elasticsearch,请确认搜索成功。
如果出现问题,请获取支持。
升级期间的 CI/CD 流水线和作业
如果您在极狐GitLab Runner 正在处理作业时升级极狐GitLab 实例,则跟踪更新会失败。当极狐GitLab 恢复在线状态时,跟踪更新应会自动恢复。然而,根据错误情况,极狐GitLab Runner 要么重试,要么最终终止作业处理。
至于工件,极狐GitLab Runner 会尝试上传三次,然后作业最终失败。
为了应对上述两种情况,建议在升级之前执行以下操作:
- 计划您的维护。
-
暂停您的 runners,或通过在
/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 版本相同的版本。两个版本应相同。
- 取消暂停您的 runners 并通过恢复先前的
/etc/gitlab/gitlab.rb
更改来解除阻止新作业启动。
在版本之间升级
极狐GitLab 有两种版本:基础版和企业版。企业版构建在基础版之上,并包括主要针对 100 名以上用户的组织的额外功能。
下面您可以找到一些帮助您更改极狐GitLab 版本的指南。
从基础版到企业版
如果您希望将极狐GitLab 安装从基础版升级到企业版,请根据安装方法遵循以下指南:
- 源代码 CE 到 JH 升级指南 - 步骤与版本升级非常相似:停止服务器,获取代码,更新配置文件以实现新功能,安装库并进行迁移,更新初始化脚本,启动应用程序并检查其状态。
- Omnibus CE 到 JH - 按照本指南将您的 Omnibus 极狐GitLab 基础版升级到企业版。
- Docker CE 到 JH - 按照本指南将您的极狐GitLab 基础版容器升级到企业版容器。
- Helm chart(Kubernetes)CE 到 JH - 按照本指南将您的极狐GitLab 基础版 Helm 部署升级到企业版。
从企业版到基础版
要将企业版安装降级回基础版,您可以遵循本指南以尽可能顺利地完成此过程。
额外功能的升级步骤
一些极狐GitLab 功能有额外的步骤。
外部 Gitaly
在升级应用服务器之前,将 Gitaly 服务器升级到较新版本。这可以防止应用服务器上的 gRPC 客户端发送旧 Gitaly 版本不支持的 RPC。
Geo
如果您使用 Geo:
极狐GitLab 的 Kubernetes 代理
如果您有与极狐GitLab 连接的 Kubernetes 集群,请升级您的极狐GitLab Kubernetes 代理以匹配您的新极狐GitLab 版本。
Elasticsearch
在更新极狐GitLab 之前,通过检查待处理的高级搜索迁移确认高级搜索迁移完成。
更新极狐GitLab 后,如果新版本破坏了兼容性,您可能需要升级Elasticsearch。更新 Elasticsearch 超出了极狐GitLab 支持的范围。
获取支持
如果出现问题:
- 复制任何错误并收集任何日志以便稍后分析,然后回滚到上一个工作版本。您可以使用以下工具帮助您收集数据:
- 如果您使用 Linux 软件包或 Docker 安装了极狐GitLab,请使用 gitlabsos。
- 如果您使用 Helm Charts 安装了极狐GitLab,请使用 kubesos。
如果您在升级过程中遇到任何问题,您可以在极狐GitLab 官方论坛上发帖求助,您也可以直接扫描下方二维码咨询专业人员: