可以将回滚配置为一个管道,包含部署管道出现故障后将部署恢复到之前稳定状态的任务。要在发生故障时进行回滚,请将回滚管道连接到任务或阶段。

根据您的角色,回滚的原因可能有所不同。

  • 作为发布工程师,我希望 Automation Pipelines 在发布期间验证是否成功,以便确定应该继续发布还是应该回滚。可能的故障包括任务失败、UserOps 拒绝、超出衡量指标阈值。
  • 作为环境所有者,我希望重新部署以前的发布,以便能够快速将环境恢复到已知的良好状态。
  • 作为环境所有者,我希望支持回滚蓝绿部署,以便可以最大程度地缩短因发布失败引起的停机时间。

使用智能管道模板创建 CD 管道并选中回滚选项时,会自动将回滚添加到管道中的任务。在此用例中,将使用智能管道模板为使用滚动升级部署模型部署到 Kubernetes 集群的应用程序定义回滚。智能管道模板会创建一个部署管道以及一个或多个回滚管道。

  • 在部署管道中,如果“更新部署”或“验证部署”任务失败,则需要回滚。
  • 在回滚管道中,使用旧映像更新部署。

您也可以使用空白模板手动创建回滚管道。创建回滚管道之前,您需要计划回滚流。有关回滚的更多背景信息,请参见在 Automation Pipelines 中计划回滚

前提条件

  • 验证您是 Automation Pipelines 中项目的成员。如果您不是其成员,则让 Automation Pipelines 管理员将您添加为项目的成员。请参见如何在 Automation Pipelines 中添加项目
  • 设置 Kubernetes 集群,以便管道在其中部署应用程序。设置一个开发集群和一个生产集群。
  • 确认您有 Docker 注册表安装程序。
  • 标识将对所有工作(包括管道、端点和仪表板)进行分组的项目。
  • 熟悉 CD 智能模板,如在使用智能管道模板之前在 Automation Pipelines 中计划 CICD 本机构建中的 CD 部分中所述,例如:
    • 创建 Kubernetes 开发端点和生产端点,以便将应用程序映像部署到 Kubernetes 集群。
    • 准备创建命名空间、服务和部署的 Kubernetes YAML 文件。如果需要从专有存储库下载映像,则 YAML 文件必须包含具有 Docker 配置密钥的部分。

过程

  1. 单击管道 > 新建管道 > 智能模板 > 持续交付
  2. 在智能管道模板中输入信息。
    1. 选择一个项目。
    2. 输入管道名称,例如 RollingUpgrade-Example
    3. 选择用于应用程序的环境。要将回滚添加到部署,必须选择生产
    4. 单击选择,选择一个 Kubernetes YAML 文件,然后单击处理
      智能管道模板将显示可用的服务和部署环境。
    5. 选择管道将用于部署的服务。
    6. 选择“开发”环境和“生产”环境对应的集群端点。
    7. 对于“映像源”,选择管道运行时输入
    8. 对于“部署模型”,选择滚动升级
    9. 单击回滚
    10. 提供运行状况检查 URL
    创建回滚管道时,输入详细信息,选择服务、部署和部署模型,并选中回滚复选框。
  3. 要创建名为 RollbackUpgrade-Example 的管道,请单击创建

    将显示名为 RollbackUpgrade-Example 的管道,并且在可以在开发阶段和生产阶段回滚的任务上显示回滚图标。

    在回滚管道上,在管道可以回滚的任务上显示回滚图标。

  4. 关闭管道。

    在“管道”页面中,将显示创建的管道以及该管道中每个阶段的新管道。

    • RollingUpgrade-Example。Automation Pipelines 会停用默认创建的管道,确保在运行之前先进行审阅。
    • RollingUpgrade-Example_Dev_Rollback。开发阶段中的任务(例如,创建服务创建密钥创建部署验证部署)失败时,将调用此回滚开发管道。为确保开发任务回滚,Automation Pipelines 默认激活回滚开发管道。
    • RollingUpgrade-Example_Prod_Rollback。生产阶段中的任务(例如,部署阶段 1验证阶段 1部署发布阶段完成发布阶段验证发布阶段)失败时,将调用此回滚生产管道。为确保生产任务回滚,Automation Pipelines 默认激活回滚生产管道。
    Automation Pipelines 为阶段创建回滚管道并激活这些管道。
  5. 启用并运行已创建的管道。
    开始运行时, Automation Pipelines 会提示您输入参数。您需要为所使用的 Docker 存储库中的端点提供映像和标记。
  6. 在“执行”页面中,选择操作 > 查看执行并监视管道执行。

    管道将从 RUNNING 状态开始,并经历开发阶段中的各个任务。如果管道无法运行开发阶段中的某个任务,则名为 RollingUpgrade-Example_Dev_Rollback 的管道会触发并回滚部署,且管道状态会更改为 ROLLING_BACK

    回滚管道回滚部署并将管道恢复到以前的稳定状态。

    回滚之后,“执行”页面将列出 RollingUpgrade-Example 管道的两个执行。

    • 您创建的管道已回滚并显示 ROLLBACK_COMPLETED
    • 触发并执行了回滚的回滚开发管道将显示 COMPLETED

    回滚结果显示在执行选项卡上,并且注释显示回滚的触发点。

结果

恭喜!您已成功定义包含回滚的管道并看到 Automation Pipelines 会在出现故障时回滚管道。