升级 Alauda DevOps Pipelines Operator

本文档介绍如何使用集群中的 Marketplace/OperatorHub 界面对 Alauda DevOps Pipelines Operator 升级到更新版本。升级过程设计得尽量简单,同时确保对现有 Tekton 资源的影响最小。

升级概览

升级 Alauda DevOps Pipelines Operator 后,您可以访问新功能、错误修复以及对 Tekton 生态系统的改进。Alauda DevOps Pipelines Operator 会根据您的配置处理所有 Tekton 组件(Pipelines、Triggers、Hub 等)的升级。

开始之前

在升级 Alauda DevOps Pipelines Operator 之前,请确保您:

  • 拥有对集群的管理员访问权限
  • 查看新版本的 release notes,了解任何不兼容变更
  • 验证现有 Tekton 组件配置与新版本兼容
  • 确认所有 Tekton 组件都处于就绪状态

先确认目标 Channel

在批准升级之前,请先确认您的 Subscription 使用的是哪个 Channel

  • stable(自 v4.6.3 起的默认值):跟踪 v4.6.z LTS 补丁发布。推荐用于生产环境。
  • latest:跟踪所有 v4.6.z 发布。在 4.6 LTS 线上与 stable 等效,并且在 v4.6.3 之前是默认值。
  • pipelines-4.6:仅跟踪 v4.6.z 补丁更新——内容与 stable 相同。
NOTE

在 release-4.6 分支上,这三个 Channel 提供的都是相同的 v4.6.z 补丁流。选择不同 Channel 主要影响您的 Subscription 中显示的 Channel 名称;升级行为在三者之间是相同的。

升级过程

使用 Marketplace/OperatorHub

  1. 访问 Marketplace/OperatorHub

    • 登录集群的管理控制台
    • 导航到 MarketplaceOperatorHub 部分
  2. 定位 Alauda DevOps Pipelines Operator

    • 在搜索栏中搜索 Alauda DevOps Pipelines
    • 点击 Alauda DevOps Pipelines 卡片
  3. 查看可用版本

    • Alauda DevOps Pipelines Operator 详情页,您可以看到当前已安装版本的信息
    • 如果有新版本可用,界面会进行提示
    • 您可以点击不同的 Channels 查看所有可用版本
  4. 发起升级

    • 如果目标版本位于不同的 Channel 中,请先在 Subscription 中切换到对应的 Channel
    • 如果当前 Channel 有更高版本可用,您将看到提示:
      • 检测到新版本
        • 若仅升级当前 Operator,请点击 Confirm 进行升级。
  5. 配置升级设置(如适用)

    • 某些升级可能会提供配置选项
    • 在大多数情况下,默认设置会保留您现有的配置
  6. 确认并开始升级

    • 点击 Confirm 开始升级过程
    • 检查升级详情并确认您的选择
    • 系统会在保留自定义资源的同时更新 Alauda DevOps Pipelines Operator
  7. 监控升级

    • 升级进度会显示在 OperatorHub 界面中
    • 您也可以检查 tekton-operator 命名空间中的状态:
      $ kubectl get pods -n tekton-operator
      当所有 pod 都处于 Running 状态时,Operator 升级完成。 随后,Operator 会自动升级 PipelinesTriggersHubChains 等组件。
    • 检查组件升级状态:
      $ kubectl get tektoninstallerset -A
      $ kubectl get pods -n tekton-pipelines
      当所有组件和 pod 都处于 Ready 状态时,组件升级完成。
  8. 验证升级

    • 检查 Alauda DevOps Pipelines Operator 版本是否已更新:
      $ kubectl get csv -n tekton-operator
      
      NAME                        DISPLAY                   VERSION   REPLACES   PHASE
      tektoncd-operator.v4.x.x    Alauda DevOps Pipelines   4.x.x     x          Succeeded
      VERSION 与新版本一致时,升级完成。
    • 验证 Tekton 组件是否正常工作
      • 测试您的 pipelines 是否可以成功运行

使用 kubectl CLI

您也可以使用命令行界面升级 Alauda DevOps Pipelines Operator。此方法适用于自动化场景,或当您更偏好基于 CLI 的操作时使用。

  1. 检查当前 Subscription

    • 首先,识别当前 Subscription 及其 Channel
      $ kubectl get subscriptions.operators.coreos.com -A | grep tektoncd-operator
      
      NAMESPACE               NAME                    PACKAGE                 SOURCE     CHANNEL
      tekton-operator         tektoncd-operator       tektoncd-operator       platform   latest
  2. 切换到目标 Channel

    • 如果您需要升级到不同 Channel 中的版本,请先 patch 该 Subscription:
      $ kubectl patch subscriptions.operators.coreos.com tektoncd-operator --type merge -p '{"spec":{"channel": "<target-channel>"}}' -n tekton-operator
      <target-channel> 替换为所需的 Channel(例如 pipelines-4.1latest)。
  3. 等待 UpgradePending 状态

    • 监控 Subscription 状态,直到其显示为 UpgradePending
      $ kubectl get subscriptions.operators.coreos.com tektoncd-operator -n tekton-operator -o yaml
      
      status:
        installplan:
          apiVersion: operators.coreos.com/v1alpha1
          kind: InstallPlan
          name: install-abc123
        state: UpgradePending
      在输出中查找 state: UpgradePending
  4. 批准 InstallPlan

    • 当 Subscription 处于 UpgradePending 状态时,找到对应的 InstallPlan:

      $ kubectl get installplan -n tekton-operator
      
      NAME            CSV                        APPROVAL   APPROVED
      install-abc123  tektoncd-operator.v4.x.x  Manual     false
    • 通过将 approved 字段设置为 true 来批准 InstallPlan:

      $ kubectl patch installplans.operators.coreos.com <installplan-name> --type merge -p '{"spec":{"approved":true}}' -n tekton-operator

      <installplan-name> 替换为上一步中实际的 InstallPlan 名称。

  5. 监控升级进度

    • 持续查看 Subscription 状态,直到其变为就绪:

      $ kubectl get subscriptions.operators.coreos.com tektoncd-operator -n tekton-operator -o yaml -w
    • 检查 Operator pod 状态:

      $ kubectl get pods -n tekton-operator

      等待所有 pod 都处于 Running 状态。

  6. 验证升级

    • 确认 Operator 版本已更新:
      $ kubectl get csv -n tekton-operator
      
      NAME                        DISPLAY                   VERSION   REPLACES   PHASE
      tektoncd-operator.v4.x.x    Alauda DevOps Pipelines   4.x.x     x          Succeeded
  7. 监控组件升级

    • Operator 会自动升级 Tekton 组件。监控它们的进度:
      $ kubectl get tektoninstallerset -A
      $ kubectl get pods -n tekton-pipelines
      确保所有组件和 pod 都达到 Ready 状态。
NOTE

CLI 升级过程与 GUI 方法使用的是相同的底层机制。主要区别在于,您需要手动控制 Channel 切换和 InstallPlan 批准步骤。

升级后步骤

升级成功完成后:

  1. 验证组件状态

    • 检查所有 Tekton 组件是否已更新:
      kubectl get tektonconfig,tektonpipeline,tektontrigger -A
      kubectl get tektoninstallerset -A
  2. 测试功能

    • 运行一个简单的 pipeline,验证系统是否正常工作
    • 确保所有现有集成都能继续正常运行
  3. 如有需要,更新自定义资源

    • 如果新版本引入了对 CRDs 的更改,您可能需要更新自定义资源
    • 有关具体迁移步骤,请参阅 release notes

回滚操作步骤

如果新版本出现问题,您可以回滚到之前的版本:

  1. 返回 Marketplace/OperatorHub 界面
  2. 选择 Alauda DevOps Pipelines Operator
  3. Uninstall 当前版本
  4. 从版本列表中选择之前的版本
  5. 按照该版本的安装过程进行操作
NOTE

降级可能需要额外的步骤,以确保您的资源与旧版本兼容。

这取决于您升级前后的版本差异。如果差异较大,您可能需要手动迁移资源。

故障排查

如果您在升级期间或升级后遇到问题:

  • 检查 Alauda DevOps Pipelines Operator pod 日志:

    $ kubectl logs -l name=tekton-operator -n tekton-operator
  • 验证 Tekton 资源的状态:

    $ kubectl get tektonconfig config -o yaml
  • 确保所有组件都具有预期状态:

    $ kubectl get tektoninstallerset

后续步骤

成功升级 Alauda DevOps Pipelines Operator 之后:

  • 了解新版本引入的新功能
  • 更新您的 CI/CD pipelines,以利用新的能力
  • 考虑启用新版本中可能提供的其他组件