ToB企服应用市场:ToB评测及商务社交产业平台

标题: KubeSphere实现金丝雀发布(Canary Release) [打印本页]

作者: 玛卡巴卡的卡巴卡玛    时间: 2024-3-30 12:14
标题: KubeSphere实现金丝雀发布(Canary Release)
0 前言

KubeSphere 基于 [Istio] 向用户提供金丝雀发布功能,即:
该方法能高效测试服务性能和可靠性,有助在实际环境发现潜在问题,又不影响系统整体稳定性。canary-release-0

环境前提

1 创建金丝雀发布任务

登录 KubeSphere 控制台:

转到灰度发布页面,点击创建灰度发布任务:

发布模式选项卡,点击金丝雀发布右侧的创建

设置任务名称,点击下一步
服务设置选项卡,从下拉列表中选择你的应用和要实现金丝雀发布的服务。如Bookinfo系统的 reviews服务 并点击下一步

新版本设置选项卡,添加另一个版本(例如 kubesphere/examples-bookinfo-reviews-v2:1.16.2;将 v1 改为 v2)并点击下一步

可用具体比例或使用请求内容(如Http Header、Cookie 和 URI)分别向这两个版本(v1 和 v2)发送流量。选择指定流量分配,并拖动中间滑块来更改向这两个版本分别发送的流量比例(如设置为各 50%)。操作完成后,点击创建

结果:

点击进去查看,v2的资源已被创建:

到工作负载下观察:

2 验证金丝雀发布

现在有两个可用的应用版本了,访问该应用以验证金丝雀发布。
访问 Bookinfo 网站,持续刷新浏览器。会看到 Book Reviews 板块以 50% 比例在 v1 版本和 v2 版本之间切换:

相信大家一眼就看出区别了:

金丝雀发布任务创建后会显示在任务状态选项卡下:

点击该任务查看详情可看到每个版本分别收到一半流量,新的部署也已创建:

可执行以下命令直接获取虚拟服务来识别权重:
  1. kubectl -n demo-project get virtualservice -o yaml
复制代码
预期输出:
  1. ...
  2. spec:
  3.   hosts:
  4.   - reviews
  5.   http:
  6.   - route:
  7.     - destination:
  8.         host: reviews
  9.         port:
  10.           number: 9080
  11.         subset: v1
  12.       weight: 50
  13.     - destination:
  14.         host: reviews
  15.         port:
  16.           number: 9080
  17.         subset: v2
  18.       weight: 50
  19.       ...
复制代码
3 查看网络拓扑

在运行 KubeSphere 的机器执行以下命令引入真实流量,每 0.5 秒模拟访问一次 Bookinfo。
  1. watch -n 0.5 "curl http://productpage.demo-project.192.168.0.2.nip.io:32277/productpage?u=normal"
复制代码
将命令中的主机名和端口号替换成自己环境的。
4 查看链路追踪详情

KubeSphere 提供基于 Jaeger 的分布式追踪功能,用来对基于微服务的分布式应用程序进行监控及故障排查。
5 接管所有流量

若一切运行顺利,则可以将所有流量引入新版本:
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。
参考:
本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4