点击上方“程序猿技术大咖”,关注并选择“设为星标”
回复“加群”获取入群讨论资格!
本篇文章来自《华为云云原生王者之路训练营》黄金系列课程第10课,由华为云研发专家Lynsey 博士主讲,详细介绍灰度发布的定义,分类,流程及ASM灰度发布功能与使用场景。
灰度发布概述
灰度发布的定义和分类
灰度发布是迭代的软件产品在生产环境安全上线的一种重要手段。
应用服务网格基于Istio提供的服务治理能力,对服务提供多版本支持和灵活的流量策略,从而支持多种灰度发布场景。
金丝雀发布(可理解为灰度发布)
在生产环境上引一部分实际流量对一个新版本进行测试,测试新版本的性能和表现,在保证系统整体稳定运行的前提下,尽早发现新版本在实际环境上的问题。
通过在线上运行的服务中,新加入少量的新版本的服务,然后从这少量的新版本中快速获得反馈,根据反馈决定最后的交付形态。
基于权重的灰度发布
可根据需要灵活动态的调整不同服务版本的流量比例
基于内容的灰度发布
可根据请求的内容控制其流向的服务版本(Cookie, Header, OS, Browser)
蓝绿发布
蓝绿发布提供了一种零宕机的部署方式。不停老版本,部署新版本进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。始终有两个版本同时在线,有问题可以快速切换。
在部署应用的过程中,应用始终在线。并且新版本上线过程中,不会修改老版本的任何内容,在部署期间老版本状态不受影响。只要老版本的资源不被删除,可以在任何时间回滚到老版本。
可根据需要将全量流量在新旧版本间切换:
灰度发布的流程
灰度发布全流程自动化管理:
灰度版本一键部署,流量切换一键生效
配置式灰度策略,支持流量比例、请求内容(Cookie、OS、浏览器等)、源IP
一站式健康、性能、流量监控,实现灰度发布过程量化、智能化、可视化
ASM灰度发布功能与使用场景介绍
灰度发布功能 – 基于内容的灰度发布
步骤1:发起金丝雀灰度任务,选择一个服务进行灰度发布,并指定其版本号
步骤2:给选定服务创建灰度版,选择灰度发布版本的镜像
步骤3:提交并等待灰度版本正常启动
步骤4:在实例正常启动后,可以给灰度版本配置流量规则,分配流量
步骤5:配置完成流量规则后,经过一段时间的运行,确认灰度版本运行正常,满足业务要求,则可以切换全部流量到灰度版本,原来版本下线。
灰度发布功能 – 基于内容的灰度发布(后台操作)
Deployment
Destination Rule
Virtual Service
灰度发布功能 – 基于权重的灰度发布
步骤1:发起金丝雀灰度任务,选择一个服务进行灰度发布
步骤2:给选定服务创建灰度版
步骤3:提交并等待灰度版本正常启动
步骤4:在实例正常启动后,可以给灰度版本配置流量规则,分配流量
步骤5:经过一段时间的运行,确认灰度版本运行正常,满足业务要求,则可以切换全部流量到灰度版本,原来版本下线
灰度发布功能 – 基于权重的灰度发布(后台操作)
Deployment
Destination Rule
Virtual Service
灰度发布功能 – 蓝绿发布
步骤1:发起蓝绿发布任务,选择一个服务进行蓝绿发布
步骤2:给选定服务创建灰度版
步骤3:提交并等待灰度版本正常启动,在实例正常启动后,切换全量流量到灰度版本
步骤4:经过一段时间的运行,确认灰度版本运行正常,满足业务要求,则可以将原版本下线
步骤5:如果发现灰度版本有问题,也可以一键迁移回原版本,从而完成安全快速热回退
灰度发布功能 – 蓝绿发布(后台操作)
Deployment
Destination Rule
Virtual Service
实验:基于ASM实现web app版本的灰度发布
实验目标:
能够对灰度发布的流程有一定的认识和了解
能够理解灰度发布的类型,配置简单的灰度策略
能够掌握检查灰度策略是否生效的方法,包括界面和后台命令
实验前置条件:
在Kubernetes集群上启用Istio服务网格
在集群上部署好天气预报应用的四个服务的v1版本,可实现服务间的访问互通
实验关键步骤:
观察当前的服务调用关系,服务拓扑图和应用UI
对forecast服务进行基于权重/内容的灰度发布,权重/策略可任意调整,并观察服务的调用关系
常用命令:
感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!
喜欢就点个"在看"呗,留言、转发朋友圈