博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
idou老师教你学Istio 18 : 如何用istio实现应用的灰度发布
阅读量:4315 次
发布时间:2019-06-06

本文共 1742 字,大约阅读时间需要 5 分钟。

Istio为用户提供基于微服务的流量治理能力。Istio允许用户按照标准制定一套流量分发规则,并且无侵入的下发到实例中,平滑稳定的实现灰度发布功能。

基于华为云的Istio服务网格技术,使得灰度发布全流程自动化管理:

• 灰度版本一键部署,流量切换一键生效

• 配置式灰度策略,支持流量比例、请求内容(Cookie、OS、浏览器等)、源IP

• 一站式健康、性能、流量监控,实现灰度发布过程量化、智能化、可视化

Istio服务网格为应用治理提供的灰度发布功能,稳定高效地推动企业应用的迭代升级。用户无需使用繁琐的命令行配置,而是通过清晰友好的图形界面,轻松直观地完成灰度发布整个过程(如图1)。灰度发布内置金丝雀、蓝绿、A/B Testing等典型灰度发布功能,下面以金丝雀发布为例介绍如何使用Istio服务进行一次灰度发布。

0214_15.jpg

Figure 1 灰度版本发布流程

假设,用户已经拥有了一个稳定运行的应用,以Bookinfo程序为例,用户通过【应用管理】下的【应用部署】功能已经部署了Bookinfo程序(如图2)。

0214_16.jpg

Figure 2 Bookinfo示例程序

1. 创建金丝雀发布任务

点击【应用管理】下的【灰度发布】栏,可以查看进行中的发布任务、历史发布任务和创建新的发布任务(如图3)。点击“金丝雀发布”卡片上的“创建”按钮,跳转至“创建发布任务”界面,选择灰度发布组件reviews,填写发布任务名称、版本号和版本描述,并点击“创建”按钮。

0214_17.jpg

Figure 3 灰度发布任务卡片

0214_18.jpg

Figure 4 创建灰度发布任务

2. 部署灰度版本

灰度版本会继承当前线上版本的所有配置,如资源限制、环境变量等,并默认会选择一个最新的镜像版本。用户只需最少量的输入即可,如编辑待部署的灰度版本的实例数量和实例的镜像配置(包括镜像版本和镜像高级设置),点击“部署灰度版本”按钮,一键式部署版本(如图5)。

0214_19.jpg

Figure 5 部署灰度版本

3. 查看灰度版本状态

当用户配置好灰度策略后,可以通过界面实时监控灰度版本的状态,具体包括实例的健康监控信息、性能监控信息和启动日志。待版本启动进度达到100%时,“配置灰度策略”按钮被激活,可点击跳转至下一步。

0214_20.jpg

Figure 6 查看灰度版本状态

4. 配置灰度策略

金丝雀发布支持两种策略:“基于流量比例发布”和“基于请求内容发布”。“基于流量比例发布”,用户可以为两个版本更改实例数和流量配比,可根据需求将灰度版本的流量配比逐步增大并进行“策略下发”(如图7)。

0214_21.jpg

Figure 7 基于流量比例发布

“基于请求内容发布”目前支持基于Cookie内容,自定义Header,操作系统和浏览器的规则约束,只有满足规则约束的访问流量才可访问到灰度版本(如图8)。

0214_22.jpg

Figure 8 基于请求内容发布

策略下发后,多次访问Bookinfo应用,可以看到灰度版本与默认版本的访问界面交替出现(如图9和图10)。

0214_23.jpg

Figure 9 Bookinfo默认版本访问界面

 

0214_24.jpg

Figure 10 Bookinfo灰度版本访问界面

5. 监测灰度运行状态

点击进入“监测灰度运行状态”,通过查看原版本和灰度版本的实时流量监控(请求每秒访问次数、请求时延)和健康监控状态(POD状态、CPU使用率和物理内存使用率)来确定灰度策略的执行情况(如图11)。

0214_25.jpg

Figure 11 监测灰度运行状态

如果用户认为灰度版本可以上线使用,可以在灰度版本卡片内点击“接管所有流量”按钮。用户确保灰度版本可以稳定运行并决定替换原版本,则点击原版本卡片的“版本下线”按钮,结束灰度发布,完成版本升级(如图12)。此后如果再次访问Bookinfo应用,则只会访问到灰度版本(如图10)。

0214_26.jpg

Figure 12 在历史记录中查看已完成的发布任务

华为Istio服务的灰度发布功能,使您的灰度发布过程更加轻松易行。这个一站式的发布平台,通过内置的灰度发布流程引导用户非常方便地完成一个灰度发布的过程,使得原本繁琐又略带危险性的操作变得非常容易。更多内容,欢迎体验华为云Istio服务。

相关服务请访问

转载于:https://www.cnblogs.com/CCE-SWR/p/10374735.html

你可能感兴趣的文章
(转)什么是JSON+如何处理JSON字符串
查看>>
(译)理解python线程
查看>>
【总结】动态树
查看>>
【vuejs深入二】vue源码解析之一,基础源码结构和htmlParse解析器
查看>>
编程中的24条经典语录
查看>>
Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8 (转)
查看>>
chrome 低版本的background-attachment: fixed问题
查看>>
C++编程思想1
查看>>
如何避免 await/async 地狱
查看>>
POJ 2488 A Knight's Journey-dfs
查看>>
MyBatis 插入时返回刚插入记录的主键值
查看>>
Python基本语法
查看>>
图像处理------颜色梯度变化 (Color Gradient) 分类: ...
查看>>
Hadoop_我理解的Map-Reduce
查看>>
HDU1242 Rescue(BFS+优先队列)
查看>>
mysql入门-数据类型(一)
查看>>
FTP服务的搭建
查看>>
Net开源HelloData之:系统配置
查看>>
当时学习《鸟哥的Linux私房菜-基础学习篇》记录的点
查看>>
如何设置eclipse下查看java源码
查看>>