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

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

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

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

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

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

Figure 1 灰度版本发布流程

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

Figure 2 Bookinfo示例程序

1. 创建金丝雀发布任务

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

Figure 3 灰度发布任务卡片

Figure 4 创建灰度发布任务

2. 部署灰度版本

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

Figure 5 部署灰度版本

3. 查看灰度版本状态

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

Figure 6 查看灰度版本状态

4. 配置灰度策略

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

Figure 7 基于流量比例发布

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

Figure 8 基于请求内容发布

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

Figure 9 Bookinfo默认版本访问界面

Figure 10 Bookinfo灰度版本访问界面

5. 监测灰度运行状态

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

Figure 11 监测灰度运行状态

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

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

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

相关服务请访问https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019

idou老师教你学Istio 18 : 如何用istio实现应用的灰度发布的更多相关文章

  1. idou老师教你学Istio11 : 如何用Istio实现流量熔断

    在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影 ...

  2. idou老师教你学Istio 07: 如何用istio实现请求超时管理

    在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简 ...

  3. idou老师教你学Istio :如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  4. idou老师教你学Istio 25:如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  5. idou老师教你学Istio 22 : 如何用istio实现调用链跟踪

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等一些功能. 每一个功能都帮助我们在不同场景中实现不同的业务.那么其中比如流量监控这种复杂的功能Istio是如何让我们在不同的应用中实现 ...

  6. idou老师教你学Istio 04:Istio性能及扩展性介绍

    Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要 ...

  7. idou老师教你学istio1:如何为服务提供安全防护能力

    之前,已为大家介绍过 Istio 第一主打功能---连接服务. 凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此. 今天,我们就来谈谈Istio第二主打功能---保护服务. ...

  8. idou老师教你学Istio:如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

  9. idou老师教你学Istio 23 : 如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

随机推荐

  1. iOS-MMDrawerController第三方库的使用(转)

    链接:https://github.com/mutualmobile/MMDrawerController ,根据导航item+滚动条progressView实现的手势滑动切换视图的 MMDrawer ...

  2. WordPress的摘要显示方式

    WordPress的后台有摘要显示的栏目,如果没有显示,需要设置一下,如图 在列表页现实的内容的时候,一般是有摘要的显示摘要,没有摘要的截取文章的前一部分文字.代码如下 <?php if(has ...

  3. 日后成为人工智能领域的小大佬,立个flag~

    时间过的很快,仿佛就在昨天我还是一个机械在校硕士.但现在我已经开始在互联网企业中上班了,第一周的小任务进行简单的数据处理,自己搞的很不好,路还很长,但来日方长! 这周开始学习爬虫,最近会很忙,希望能改 ...

  4. leetcode834 Sum of Distances in Tree

    思路: 树形dp. 实现: class Solution { public: void dfs(int root, int p, vector<vector<int>>& ...

  5. 数据库数据生成Excel表格(多用在导出数据)

    最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...

  6. java积累的细节问题

    一.将几个数字进行拼接,拼接成字符串 一定要将""放到几个数字之前,否则就会把数字相加之后的数转化成字符串 如你需要拼接年份,月份,和日 如果:2018+12+13+"& ...

  7. Mathtype 问题汇总(3)

    1. 调整行间距 2. 调整字号 在 MathType 中,选择「大小 > 定义」将对话框中「完整」所对应的值改为和文字大小匹配的pt(磅值),这样便可以解决在文字编写的 Word 文档中某一行 ...

  8. 【Python基础】01_Python中的变量

    1.定义和运算: 变量名 = 值 定义变量举例: # 定义一个变量 myCar = "比亚迪F0" # 输出一个变量 print(myCar) 变量之间的简单运算举例: price ...

  9. js — 数组Array

    目录 1. isArray 2. 转换方法 3. 分割字符串 join 4. 栈方法 5. 队列方法 6. 重排序方法 7. 操作方法 8. 位置方法 - 索引 9. 迭代方法 数组 array 解释 ...

  10. 缓冲区Buffer和缓存区Cache的区别

    1.buffer 将数据写入到内存里,这个数据的内存空间在Linux系统里一般被称为缓冲区(buffer),例如:写入到内存buffer缓冲区,即写缓冲. 为了提高写操作性能,数据在写入最终介质或下一 ...