作者:尹航
概述
灰度发布是一种常见的对新版本应用服务的发布手段,其特点在于能够将流量在服务的稳定版本和灰度版本之间时刻切换,以帮助我们用更加可靠的方式实现服务的升级。在流量比例切换的过程中,我们可以逐步验证新版本服务的功能特性、可靠性等特性,一旦新版本服务不满足需求,还可以时刻将流量切回老版本,因此灰度发布也是一种在软件工程领域中得到广泛应用的发布方案。
当前,服务网格的无侵入式灰度发布已经是一个非常成熟的特性:我们可以同时部署服务的多个版本,使用 DestinationRule 来制定工作负载的版本定义,并使用 VirtualService 的流量比例分割的能力将不同比例的服务流量发往不同版本的工作负载,直至所有流量都直接发往新版本服务。
然而,在云原生应用广泛采用的大背景下,应用程序往往不再以单体服务的形式存在,而是被分解为一系列云原生服务部署在 Kubernetes 集群中,服务之间存在调用链路、共同对外提供服务。
当服务之间存在调用链路时,对服务的灰度发布往往不局限于单个服务,而是需要对服务的整条请求链路进行环境隔离与流量控制,即:保证灰度流量只发往调用链路中服务的灰度版本,实现调用链路之间相互隔离的隔离环境。针对整个调用链路的流量管理需求为服务网格的无侵入式流量管理方案带来了新的挑战:
流量泳道的严格模式与宽松模式
1. 严格模式的流量泳道
2. 宽松模式的流量泳道
演示:使用严格模式的 流量泳道实现全链路灰度管理
1. 前提条件
2. 部署示例服务
3. 创建泳道组和对应泳道
4. 验证全链路灰度功能是否生效
总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。