升级极狐GitLab

升级极狐GitLab 是一个相对简单的过程,但复杂性可能会根据以下因素增加:

  • 您所使用的安装方法。
  • 您的极狐GitLab 版本的老旧程度。
  • 是否升级到主要版本。

如果可能,您应该在测试环境中先测试升级,然后再更新生产实例。您的测试环境应尽可能地模拟生产环境。

请务必阅读整个页面,因为它包含与每种升级方法相关的信息。

升级极狐GitLab

要升级极狐GitLab:

  1. 创建一个升级计划以记录您的升级步骤。
  2. 熟悉维护政策文档
  3. 阅读您将要跳过的版本的发布帖子,特别是弃用、移除和关于升级的重要注意事项。
  4. 确定您应该采取的升级路径。如果您的升级路径包括必要的升级停顿,您可能需要执行多次升级以从当前版本移动到目标版本。如有相关,请检查目标极狐GitLab 版本的操作系统兼容性
  5. 检查后台迁移。所有迁移必须在每次升级之前完成。您必须在主要和次要版本之间分散升级,以允许后台迁移完成。
  6. 首先在测试环境中测试您的升级,并制定一个回滚计划,以减少计划外中断和延长停机时间的风险。
  7. 如果在您开始的版本中可用,考虑在升级期间启用维护模式
  8. 在升级之前,查阅极狐GitLab 各个版本的更改以确保兼容性:
  9. 执行预升级检查
  10. 暂停运行中的 CI/CD 流水线和作业
  11. 如果相关,请遵循额外功能的升级步骤
  12. 根据您的安装方法遵循升级步骤
  13. 如果您的极狐GitLab 实例与任何 runners 关联,请将其升级以匹配当前的极狐GitLab 版本。此步骤可确保与极狐GitLab 版本的兼容性
  14. 如果在升级中遇到问题,请获取支持
  15. 如果您启用了维护模式,请禁用维护模式
  16. 取消暂停运行中的 CI/CD 流水线和作业
  17. 执行升级后的检查

根据安装方法升级

根据安装方法和您的极狐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 自编译(源代码)

过去我们使用单独的文档进行升级说明,但现在我们已经切换为使用单个文档。旧的升级指南仍然可以在 Git 仓库中找到:

::EndTabs

升级前和升级后的检查

在升级前后立即执行预升级和升级后的检查,以确保极狐GitLab 的主要组件正常工作:

  1. 检查一般配置

    sudo gitlab-rake gitlab:check
    
  2. 确认加密的数据库值可以解密

    sudo gitlab-rake gitlab:doctor:secrets
    
  3. 在极狐GitLab UI 中,检查:
    • 用户可以登录。
    • 项目列表可见。
    • 项目问题和合并请求可以访问。
    • 用户可以从极狐GitLab 克隆仓库。
    • 用户可以向极狐GitLab 推送提交。
  4. 对于极狐GitLab CI/CD,检查:
    • runners 能够接收作业。
    • Docker 镜像可以从注册表中推送和拉取。
  5. 如果使用 Geo,请在主节点和每个次节点上运行相关检查:

    sudo gitlab-rake gitlab:geo:check
    
  6. 如果使用 Elasticsearch,请确认搜索成功。

如果出现问题,请获取支持

升级期间的 CI/CD 流水线和作业

如果您在极狐GitLab Runner 正在处理作业时升级极狐GitLab 实例,则跟踪更新会失败。当极狐GitLab 恢复在线状态时,跟踪更新应会自动恢复。然而,根据错误情况,极狐GitLab Runner 要么重试,要么最终终止作业处理。

至于工件,极狐GitLab Runner 会尝试上传三次,然后作业最终失败。

为了应对上述两种情况,建议在升级之前执行以下操作:

  1. 计划您的维护。
  2. 暂停您的 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
    
  3. 等待所有作业完成。
  4. 升级极狐GitLab。
  5. 极狐GitLab Runner 升级到与极狐GitLab 版本相同的版本。两个版本应相同
  6. 取消暂停您的 runners 并通过恢复先前的 /etc/gitlab/gitlab.rb 更改来解除阻止新作业启动。

在版本之间升级

极狐GitLab 有两种版本:基础版和企业版。企业版构建在基础版之上,并包括主要针对 100 名以上用户的组织的额外功能。

下面您可以找到一些帮助您更改极狐GitLab 版本的指南。

从基础版到企业版

note以下指南仅适用于企业版订阅者。

如果您希望将极狐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 官方论坛上发帖求助,您也可以直接扫描下方二维码咨询专业人员:

技术支持

相关主题