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

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

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

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

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

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

前提条件

  • 验证您是 VMware Code Stream 中项目的成员。如果您不是其成员,则让 VMware Code Stream 管理员将您添加为项目的成员。请参见如何在 VMware Code Stream中添加项目
  • 设置 Kubernetes 群集,以便管道在其中部署应用程序。设置一个开发群集和一个生产群集。
  • 创建 Kubernetes 开发端点和生产端点,以便将应用程序映像部署到 Kubernetes 群集。
  • 确认您有 Docker 注册表安装程序。
  • 确认您有 Kubernetes YAML 文件可应用到部署。
  • 熟悉如何使用 CD 智能模板。请参见在使用智能模板之前在 VMware Code Stream 中计划 CD 本地构建

过程

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

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

    RollbackUpgrade-Example 管道

  4. 关闭管道。

    在“管道”页面中,您将看到已创建的管道以及该管道中每个阶段的新管道。

    • RollingUpgrade-Example。创建的管道默认处于禁用状态,以确保您可以在运行之前复查该管道。
    • RollingUpgrade-Example_Dev_Rollback。当开发阶段中的任务(例如,“创建服务”、“创建密钥”、“创建部署”和“验证部署”)失败时,将调用此回滚开发管道。此回滚开发管道默认处于启用状态,以确保回滚开发任务。
    • RollingUpgrade-Example_Prod_Rollback。当生产阶段中的任务(例如,“部署阶段 1”、“验证阶段 1”、“部署分配阶段”、“完成分配阶段”和“验证分配阶段”)失败时,将调用此回滚生产管道。此回滚生产管道默认处于启用状态,以确保回滚生产任务。
    主管道、prod_rollback 管道和 dev_rollback 管道
  5. 启用并运行已创建的管道。
    开始运行时,系统会提示您输入参数。您需要为所使用的 Docker 存储库中的端点提供映像和标记。
  6. 在“执行”页面中,选择操作 > 查看执行以监视管道执行。

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

    正在回滚

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

    • 已创建的管道在回滚之后将显示 ROLLBACK_COMPLETED
    • 为执行回滚而触发的回滚开发管道将显示 COMPLETED

    已执行的管道在回滚后

结果

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