这个课题向你展示如何将一个服务的老版本流量逐渐迁移到新版本上。使用Istio,我们可以通过使用每次流量迁移权重低于100的一系列规则。逐渐完成流量的迁移,例如10,20,30,… 100%。这个课题简易的通过两步将 reviews:v1 的流量迁移到 reviews:v3 :50%, 100%。

Before you begin

  • 安装Istio
  • 部署Bookinfo示例

注意: 这个课题假设你在k8s环境部署应用。所有示例命令都使用的是k8s版规则的yaml文件 (e.g., samples/bookinfo/kube/route-rule-all-v1.yaml)。如果你在一个不同环境进行这个课题,将 kube 更换为对应你运行环境的目录 (e.g., samples/bookinfo/consul/route-rule-all-v1.yaml for the Consul-based runtime).

Weight-based version routing

1.为所有微服务设置默认版本v1

istioctl create -f samples/bookinfo/kube/route-rule-all-v1.yaml

2.在你的浏览器中打开 http://$GATEWAY_URL/productpage 来确认 reviews 服务的版本是v1.
你应该观察Bookinfo应用的 productpage展示的内容。注意 productpage 展示内容无星级评定,因为 reviews:v1 没有访问ratings 服务。

注意: 如果你之前进行过 request routing 课题,你可能需要登出测试用户 “jason” 或删除特地为他创建的测试规则。

istioctl delete routerule reviews-test-v2

3.首先,通过如下命令将50%的流量从 reviews:v1 转换到 reviews:v3

istioctl replace -f samples/bookinfo/kube/route-rule-reviews-50-v3.yaml

注意我们使用 istioctl replace 而不是 create
确认我们替换的规则:

istioctl get routerule reviews-default -o yaml
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:name: reviews-defaultnamespace: default
spec:destination:name: reviewsprecedence: 1route:- labels:version: v1weight: 50- labels:version: v3weight: 50

4.在你的浏览器中刷新productpage ,你现在应该在大约50%的次数中看到红色星级评定。
注意:当前Envoy sidecar实现,你可能需要刷新productpage 很多次观察适当分布。这可能在你看到任何变化前需要刷新15次或者更多。如果你想要更常见红星的话,可以修改规则路由90%的流量到v3.

5.当reviews 微服务的v3版本被认为是稳定的时,我们可以路由100%的流量到 reviews:v3:

istioctl replace -f samples/bookinfo/kube/route-rule-reviews-v3.yaml

你可以现在以任何用户的身份登陆productpage ,你应该会在每条书评上看到红星。

Understanding what happened

这个课题中,我们使用Istio的权重路由功能将 reviews 服务的旧版本流量迁移到新版本中。注意这和使用容器业务流程平台的部署功能由很大不同,后者使用示例扩展来管理流量。使用Istio,我们允许 reviews服务的两个版本单独缩放而互不影响流量分配。关于使用自动伸缩的版本路由,查看 Canary Deployments using Istio

Cleanup

  • 移除应用路由规则
istioctl delete -f samples/bookinfo/kube/route-rule-all-v1.yaml
  • 如果你不打算探索接下来地任何课题,参考 Bookinfo cleanup 指南来关闭应用。

Traffic Shifting相关推荐

  1. 深入剖析全链路灰度技术

    作者:扬少 当服务有新版本要发布上线时,通过引流一小部分流量到新版本,可以及时发现程序问题,有效阻止大面积故障的发生.业界上已经有比较成熟的服务发布策略,比如蓝绿发布.A/B 测试以及金丝雀发布,这些 ...

  2. 基于WASM的无侵入式全链路A/B Test实践

    简介:我们都知道,服务网格(ServiceMesh)可以为运行其上的微服务提供无侵入式的流量治理能力.通过配置VirtualService和DestinationRule,即可实现流量管理.超时重试. ...

  3. 如果不懂Service mesh,就不要谈微服务了

    提到微服务,spring cloud等经典框架被使用的最为广泛,但是在2016年才被提起的Service Mesh,已经被Paypal.Lyft.Ticketmaster和Credit Karma等等 ...

  4. 微服务“新秀”之Service Mesh

    女主宣言 本文出自于ADDOPS团队,该文章的译者霍明明参与了360 HULK云平台容器化及虚拟化平台相关服务建设,对微服务有着独到的见解.今天的主角Istio是Google/IBM/Lyft联合开发 ...

  5. Optimized Cost per Click in Taobao Display Advertising-oCPC 店商广告投放经典论文

    欢迎转载,请注明出处:http://blog.csdn.net/stund/article/details/73611755 0.背景简介 之前了解oCPC概念是从今日头条流传出来的,之后各种寻找终于 ...

  6. Flagger on ASM——基于Mixerless Telemetry实现渐进式灰度发布系列 3 渐进式灰度发布

    简介:作为CNCF[成员](https://landscape.cncf.io/card-mode?category=continuous-integration-delivery&group ...

  7. Istio官方文档翻译

    本来是有翻译好的文档的,但是当时没打开,不巧是今天给打开了...但是我花了两天的时间翻译了不少,没办法,为了尊重自己的劳动成果,还是贴过来吧... 还是建议大家直接去Istio官方文档中文版. 我只翻 ...

  8. Serverless Architectures

    Serverless architectures are application designs that incorporate third-party "Backend as a Ser ...

  9. 机制设计智能出价:OCPC

    转载出处:http://blog.csdn.net/stund/article/details/73611755 0.背景简介 之前了解oCPC概念是从今日头条流传出来的,之后各种寻找终于找到大淘宝的 ...

最新文章

  1. 如何正确应用推荐系统!
  2. stutBar的使用
  3. 技术人生:遇到挫折,不可轻言放弃。
  4. 解决Ubuntu18.04下Qt中无法输入中文的问题
  5. 秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题
  6. QT 中textEdit 和 textBrowser 无法使用斜体及加粗等 解决办法
  7. edge浏览器运行不流畅怎么办 提高edge浏览器速度的方法
  8. EOS全球行南京站:降低用户及开发者门槛仍是2019 EOS关键词
  9. Docker 安装 ES 7.7.0 及 Head、Kibana、IK分词器、Logstash、Filebeat 插件
  10. 红魔游戏手机6S Pro星耀白版开启预约:4399元起10月15日正式首销
  11. zigbee CC2530 系列教程 9 睡眠唤醒实验
  12. 类似微信的即时通讯服务器,除了微信,还有这些常用即时通讯APP
  13. STM32学习笔记——USB鼠标
  14. wps教鞭功能_你未必知道的WPS神奇功能
  15. 【转载】优雅抒情的浪漫小提琴曲
  16. [M1]Daily Scum 9.26
  17. 配置小程序项目的第一个页面—小程序入门与实战(五)
  18. IOS开发之——动画-图标抖动(97)
  19. poi导出excel不可读
  20. 学习使用USB-TTL驱动PN532来读写IC卡

热门文章

  1. 前端学习笔记(注册页面综合案例html5)
  2. 微信小程序实现圆形菜单弹出选中动画
  3. Chrome插件安装的3种方法,解决拖放不能安装的情况,并提供插件下载
  4. 【代码实践】使用CLIP做一些多模态的事情
  5. 使用OneDNS完美解决办公网络优化问题
  6. LearnOpenGL学习笔记—入门03:Hello Triangle
  7. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令
  8. Nginx 静态压缩/缓存
  9. 医学影像-深度学习综述
  10. Python 分类问题研究-Fisher线性判别