升级 Alauda Container Platform Pipelines Operator

本文档介绍如何在集群中使用 Marketplace/OperatorHub 界面将 Alauda Container Platform Pipelines Operator 升级到较新版本。升级过程旨在确保对现有 Tekton 资源的影响最小,同时保持操作简单明了。

升级概述

升级 Alauda Container Platform Pipelines Operator 后,您可以使用 Tekton 生态系统中的新功能、bug 修复和改进。Alauda Container Platform Pipelines Operator 会根据您的配置处理所有 Tekton 组件(Pipelines、Triggers、Hub 等)的升级。

开始之前

升级 Alauda Container Platform Pipelines Operator 前,请确保您:

  • 具有集群的管理权限
  • 查看新版本的 release notes,以了解任何不兼容变更
  • 确认现有 Tekton 组件配置与新版本兼容
  • 确认所有 Tekton 组件均处于就绪状态

首先确认目标 channel

批准升级前,请确认 Subscription 使用的 channel:

  • stable(从 v4.6.3 起为默认 channel):跟踪 v4.6.z LTS 补丁版本。建议用于生产环境。
  • latest:跟踪每个 v4.6.z 版本。等同于 4.6 LTS 线路上的 stable,并且在 v4.6.3 之前为默认 channel。
  • pipelines-4.6:仅跟踪 v4.6.z 补丁更新 — 内容与 stable 相同。
NOTE

在 release-4.6 线路上,三个 channel 都携带相同的 v4.6.z 补丁流。channel 的选择主要影响 Subscription 中显示的 channel 名称;三个 channel 的升级行为相同。

升级过程

使用 Marketplace/OperatorHub

  1. 访问 Marketplace/OperatorHub

    • 登录集群的管理控制台
    • 导航到 Marketplace 或 OperatorHub 部分
  2. 找到 Alauda Container Platform Pipelines Operator

    • 在搜索栏中搜索 Alauda Container Platform Pipelines
    • 单击 Alauda Container Platform Pipelines 卡片
  3. 查看可用版本

    • 在 Alauda Container Platform Pipelines Operator 详情页面上,您可以看到当前已安装版本的信息
    • 界面会指示是否有较新版本可用
    • 您可以单击不同的 Channels 来查看所有可用版本
  4. 开始升级

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

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

    • 单击 Confirm 开始该过程
    • 查看升级详情并确认选择
    • 系统将在保留自定义资源的同时更新 Alauda Container Platform Pipelines Operator
  7. 监控升级

    • 升级进度将显示在 OperatorHub 界面中
    • 您还可以在 tekton-operator namespace 中检查状态:
      $ kubectl get pods -n tekton-operator
      当所有 pod 均处于 Running 状态时,Operator 升级完成。 随后,Operator 将自动升级 Pipelines、Triggers、Hub、Chains 等组件。
    • 检查组件升级状态:
      $ kubectl get tektoninstallerset -A
      $ kubectl get pods -n tekton-pipelines
      当所有组件和 pod 均处于 Ready 状态时,组件升级完成。
  8. 验证升级

    • 检查 Alauda Container Platform Pipelines Operator 版本是否已更新:
      $ kubectl get csv -n tekton-operator
      
      NAME                        DISPLAY                   VERSION   REPLACES   PHASE
      tektoncd-operator.v4.x.x    Alauda Container Platform Pipelines   4.x.x     x          Succeeded
      当 VERSION 与新版本匹配时,升级完成。
    • 验证 Tekton 组件是否正常运行
      • 测试流水线是否可以成功运行

使用 kubectl CLI

您也可以使用命令行界面升级 Alauda Container Platform 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 中的版本,请修补 Subscription:
      $ kubectl patch subscriptions.operators.coreos.com tektoncd-operator --type merge -p '{"spec":{"channel": "<target-channel>"}}' -n tekton-operator
      将 <target-channel> 替换为所需的 channel(例如 pipelines-4.1、latest)。
  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 Container Platform 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. 根据需要更新自定义资源

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

回滚操作步骤

如果您在新版本中遇到问题,可以回滚到之前的版本:

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

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

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

故障排除

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

  • 检查 Alauda Container Platform Pipelines Operator pod 的日志:

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

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

    $ kubectl get tektoninstallerset

后续步骤

成功升级 Alauda Container Platform Pipelines Operator 后:

  • 探索最新版本引入的新功能
  • 更新 CI/CD pipeline 以利用新功能
  • 考虑启用新版本中可能提供的其他组件