可以将回滚配置为一个管道,包含部署管道出现故障后将部署恢复到之前稳定状态的任务。要在发生故障时进行回滚,请将回滚管道连接到任务或阶段。
根据您的角色,回滚的原因可能有所不同。
- 作为发布工程师,我希望 Code Stream 在发布期间验证是否成功,以便确定应该继续发布还是应该回滚。可能的故障包括任务失败、UserOps 拒绝、超出衡量指标阈值。
- 作为环境所有者,我希望重新部署以前的发布,以便能够快速将环境恢复到已知的良好状态。
- 作为环境所有者,我希望支持回滚蓝绿部署,以便可以最大程度地缩短因发布失败引起的停机时间。
使用智能管道模板创建 CD 管道并选中回滚选项时,会自动将回滚添加到管道中的任务。在此用例中,将使用智能管道模板为使用滚动升级部署模型部署到 Kubernetes 集群的应用程序定义回滚。智能管道模板会创建一个部署管道以及一个或多个回滚管道。
- 在部署管道中,如果“更新部署”或“验证部署”任务失败,则需要回滚。
- 在回滚管道中,使用旧映像更新部署。
您也可以使用空白模板手动创建回滚管道。创建回滚管道之前,您需要计划回滚流。有关回滚的更多背景信息,请参见在 Code Stream 中计划回滚。
前提条件
- 验证您是 Code Stream 中项目的成员。如果您不是其成员,则让 Code Stream 管理员将您添加为项目的成员。请参见如何在 Code Stream 中添加项目。
- 设置 Kubernetes 集群,以便管道在其中部署应用程序。设置一个开发集群和一个生产集群。
- 确认您有 Docker 注册表安装程序。
- 标识将对所有工作(包括管道、端点和仪表板)进行分组的项目。
- 熟悉 CD 智能模板,如在使用智能管道模板之前在 Code Stream 中计划 CICD 本机构建中的 CD 部分中所述,例如:
- 创建 Kubernetes 开发端点和生产端点,以便将应用程序映像部署到 Kubernetes 集群。
- 准备创建命名空间、服务和部署的 Kubernetes YAML 文件。如果需要从专有存储库下载映像,则 YAML 文件必须包含具有 Docker 配置密钥的部分。
过程
- 单击。
- 在智能管道模板中输入信息。
- 选择一个项目。
- 输入管道名称,例如 RollingUpgrade-Example。
- 选择用于应用程序的环境。要将回滚添加到部署,必须选择生产。
- 单击选择,选择一个 Kubernetes YAML 文件,然后单击处理。
智能管道模板将显示可用的服务和部署环境。
- 选择管道将用于部署的服务。
- 选择“开发”环境和“生产”环境对应的集群端点。
- 对于“映像源”,选择管道运行时输入。
- 对于“部署模型”,选择滚动升级。
- 单击回滚。
- 提供运行状况检查 URL。
- 要创建名为 RollbackUpgrade-Example 的管道,请单击创建。
将显示名为 RollbackUpgrade-Example 的管道,并且在可以在开发阶段和生产阶段回滚的任务上显示回滚图标。
- 关闭管道。
在“管道”页面中,将显示创建的管道以及该管道中每个阶段的新管道。
- RollingUpgrade-Example。 Code Stream 会停用默认创建的管道,确保在运行之前先进行审阅。
- RollingUpgrade-Example_Dev_Rollback。开发阶段中的任务(例如,创建服务、创建密钥、创建部署和验证部署)失败时,将调用此回滚开发管道。为确保开发任务回滚, Code Stream 默认启用回滚开发管道。
- RollingUpgrade-Example_Prod_Rollback。生产阶段中的任务(例如,部署阶段 1、验证阶段 1、部署发布阶段、完成发布阶段和验证发布阶段)失败时,将调用此回滚生产管道。为确保生产任务回滚, Code Stream 默认启用回滚生产管道。
- 启用并运行已创建的管道。
开始运行时,
Code Stream 会提示您输入参数。您需要为所使用的 Docker 存储库中的端点提供映像和标记。
- 在“执行”页面中,选择并监视管道执行。
管道将从 RUNNING 状态开始,并经历开发阶段中的各个任务。如果管道无法运行开发阶段中的某个任务,则名为 RollingUpgrade-Example_Dev_Rollback 的管道会触发并回滚部署,且管道状态会更改为 ROLLING_BACK。
回滚之后,“执行”页面将列出 RollingUpgrade-Example 管道的两个执行。
- 您创建的管道已回滚并显示 ROLLBACK_COMPLETED。
- 触发并执行了回滚的回滚开发管道将显示 COMPLETED。
结果
恭喜!您已成功定义包含回滚的管道并看到
Code Stream 会在出现故障时回滚管道。