蓝绿发布是迭代产品在生产环境安全上线的一种重要手段,提供零宕机部署方式。本文介绍如何通过创建蓝绿发布单发布应用服务。
蓝绿发布单在应用服务维度互斥,即不能通过两个发布单同时发布一个应用服务,且与普通发布单互斥。
前提条件
已创建应用服务,且配置应用服务的 部署和调度策略 时,将部署分组策略设为 共分一组 或 快速分组。
关于分组策略限制说明可参考下表。
部署分组策略 | 蓝绿发布是否支持 | 说明 |
每个 Pod 一组 | × | 由于蓝绿发布的灰度验证是通过 spanner 来控制,而不是通过应用服务内百分比升级的 Pod 来控制的。 |
按部署单元分组 | × | 假设流量配比为 100 : 0,对于流量为 0 的区域,若按部署单元分组,流量无法调配至该区域。 |
共分一组 | √ | / |
快速分组 | √ | / |
共分一组(Beta 单元模式) | × | / |
按部署单元百分比并发模式 | × | / |
创建蓝绿发布单
登录 LHC 控制台。
在左侧导航栏单击 发布运维 > 发布单。
在发布部署大盘,单击 创建发布单。
配置基本信息。
标题:发布标题。
类型:支持 蓝绿发布(入口应用) 和 蓝绿发布(部署单元维度)两种类型 。
说明蓝绿发布(入口应用):适用于配置了统一接入的入口应用,发布过程中新版本先发布一倍数量的新 Pod,验证没问题后再将老版本的 Pod 回收,整个发布过程需要消耗两倍的应用服务资源。
蓝绿发布(部署单元维度):适用于非单元化的应用服务,发布过程中先切断一个部署单元的入口流量,再全量发布整个部署单元,发布后支持灰度引流验证,验证没问题后再发布下一个部署单元。
命名空间:选择待发布的应用服务所属的命名空间。
应用服务发布列表:您可以在 待选应用服务列表 中单击选择需要的应用服务,单击 添加 将应用服务添加到 已选应用服务列表 中。
说明若应用服务存在多个提交版本,需要选择要发布的版本。默认选择最新的版本。
蓝绿发布单选择的应用服务上一次部署状态必须是成功的,保证有一个完整的蓝版本在线。
蓝绿发布单选择的版本与当前运行的版本对比,不能有统一接入的配置变更。
蓝绿发布单选择的两个版本不能有拓扑变更,比如从 Cell A 变为 Cell B。对于副本数变更,不属于拓扑变更。
引流应用服务:仅当发布类型为 蓝绿发布(部署单元维度)时可见,选择需要引流的应用服务。
说明引流应用服务上一版本必须发布成功。
引流应用服务版本不能删除/添加统一接入,也不能删除/添加部署单元。
引流应用服务必须带有非单元化的路由(Ingress)。
引流应用服务必须与上文在 应用服务发布列表 中选择的应用服务部署单元相同。
部署单元发布顺序:仅当发布类型为 蓝绿发布(部署单元维度)时可见,手动更改部署单元的发布顺序。
单击 下一步,进行高级配置。
设置应用服务依赖关系:当选择了 2 个及以上应用服务时,可能需要填写应用服务之间的依赖关系。如果应用服务之间不存在依赖关系,则直接跳过。
在 依赖于 列中输入某个应用服务所依赖的服务名称(可以同时选择多个)。您可通过逐条添加的方式添加依赖关系。
例如,如果 appservice1 依赖 appservice2,则在 appservice1 对应的 依赖于 列中输入 appservice2 即可,依赖于多个应用服务时同理。
重要应用服务之间不可循环依赖,即不可出现应用服务 A 依赖于应用服务 B,同时应用服务 B 又依赖于应用服务 A 这种情况。
单击 下一步,预览已经配置好的发布单信息。
在 预览 页面确认信息无误后,单击 创建。系统会自动跳转到 发布单详情 页面,单击 整体发布 即可开始发布。
查看蓝绿发布单详情
发布单创建完成后,系统会自动跳转到 发布单详情 页面,您可以查看发布单的执行详情。下文将根据蓝绿发布类型的不同分别介绍 蓝绿发布(入口应用) 和 蓝绿发布(部署单元维度)两种发布单详情。
若发布单初始化失败,则无法进行发布,可以将鼠标悬停到 失败原因 上,查看具体原因,或单击 重新初始化。
蓝绿发布单的蓝版本为当前在线版本。
蓝绿发布(入口应用)
前置任务
执行服务配置变更:若容器服务存在添加或修改 Service 服务配置,执行 Service 服务配置任务,若无则直接跳过。
发布日志配置:若容器服务首次配置日志配置,则执行日志配置前置任务:创建或更新,若无则直接跳过。
应用服务
若应用服务带有统一接入,可配置蓝绿区流量配比。
说明仅应用服务配置了统一接入,才可以为蓝绿区设置流量配比,即在绿版本发布的过程中进行流量调拨。关于如何为应用服务配置统一接入的信息,请参见 配置统一接入。
如果需要自定义蓝绿区流量配比,在应用服务区域单击 配置,在弹框中输入蓝区、绿区流量配比即可。
如果未自定义蓝绿区流量配比,流量配比将按
蓝区:绿区 = 100:0(%)
来确定流量分发的比重。随后,将在执行后置任务时,全部流量将流向绿区。
后置任务
流量切换到绿区:若蓝绿发布应用服务,执行流量切换到绿区后置任务。
清理无效服务配置:若容器服务存在删除 Service 服务配置,执行 Service 清理任务,若无则直接跳过。
发布日志配置:若容器服务未配置日志配置或取消日志配置,则执行日志配置后置任务—删除,若无则直接跳过。
后置任务(回滚)
回退日志配置:若应用服务需回退至无资源状态,且应用服务的日志配置已生效,则执行日志配置的回退任务,若无则直接跳过。
蓝绿发布(部署单元维度)
发布顺序
该类型在发布时会先切断一个部署单元的入口流量,再全量发布整个部署单元,所以整个发布的顺序如下:
切除流量 >> 部署单元发布 >> 切换流量 >> 恢复流量
说明部署单元发布 和 切换流量 的次数由实际的部署单元数量决定。
完成一个部署单元的部署后,必须进行灰度引流操作,然后单击 确定,切换流量后继续下一个部署单元的部署操作。
整个发布单按照共分一组的方式,根据部署单元来决定应用的切流发布的顺序。如上图所示,按照 gz00a > rz00a > gz00c 的顺序先后对应用进行切流、发布操作。
灰度引流
在发布过程中,单击 灰度引流,可调配具体的部署单元流量权重。
说明如果部署单元流量权重为 0,切换流量后可能出现流量损失的情况。
其他操作
蓝绿发布单创建完成后,如需终止蓝绿发布,可单击 取消。具体操作步骤与普通发布的相同,请参见 取消发布。
说明蓝绿发布单取消之后,可能会同时出现多个运行版本,需等到下一次用户主动发布才会自动清除多余版本。
配置应用服务的部署和调度策略时,若开通了 Beta 确认功能,在应用服务发布时,单击 Beta 确认,使应用继续分组发布。具体操作步骤与普通发布的相同,请参见 Beta 确认。
若蓝绿发布执行失败,可单击 重试 或 回滚 继续进行操作。具体操作步骤与普通发布的相同,请参见 重试回滚。
发布过程中或完成后,您可以查看 Pod 事件,了解 Pod 的调度与运行状态。具体操作步骤与普通发布的相同,请参见 查看 Pod 事件。