KubeSphere 基于 [Istio] 向用户提供金丝雀发布功能,即:
该方法能高效测试服务性能和可靠性,有助在实际环境发现潜在问题,又不影响系统整体稳定性。canary-release-0
project-regular
)。请务必邀请该用户至项目中并赋予 operator
角色。参见创建企业空间、项目、用户和角色登录 KubeSphere 控制台:
转到灰度发布页面,点击创建灰度发布任务:
在发布模式选项卡,点击金丝雀发布右侧的创建:
设置任务名称,点击下一步:
在服务设置选项卡,从下拉列表中选择你的应用和要实现金丝雀发布的服务。如Bookinfo系统的 reviews服务 并点击下一步:
在新版本设置选项卡,添加另一个版本(例如 kubesphere/examples-bookinfo-reviews-v2:1.16.2
;将 v1
改为 v2
)并点击下一步:
可用具体比例或使用请求内容(如Http Header
、Cookie
和 URI
)分别向这两个版本(v1
和 v2
)发送流量。选择指定流量分配,并拖动中间滑块来更改向这两个版本分别发送的流量比例(如设置为各 50%)。操作完成后,点击创建:
结果:
点击进去查看,v2的资源已被创建:
到工作负载下观察:
现在有两个可用的应用版本了,访问该应用以验证金丝雀发布。
访问 Bookinfo 网站,持续刷新浏览器。会看到 Book Reviews 板块以 50% 比例在 v1 版本和 v2 版本之间切换:
相信大家一眼就看出区别了:
金丝雀发布任务创建后会显示在任务状态选项卡下:
点击该任务查看详情可看到每个版本分别收到一半流量,新的部署也已创建:
可执行以下命令直接获取虚拟服务来识别权重:
kubectl -n demo-project get virtualservice -o yaml
demo-project
替换为您自己项目(即命名空间)的名称。admin
帐户登录。预期输出:
... spec: hosts: - reviews http: - route: - destination: host: reviews port: number: 9080 subset: v1 weight: 50 - destination: host: reviews port: number: 9080 subset: v2 weight: 50 ...
在运行 KubeSphere 的机器执行以下命令引入真实流量,每 0.5 秒模拟访问一次 Bookinfo。
watch -n 0.5 "curl http://productpage.demo-project.192.168.0.2.nip.io:32277/productpage?u=normal"
将命令中的主机名和端口号替换成自己环境的。
在流量监控中,可看到不同服务之间的通信、依赖关系、运行状态及性能
点击组件(例如 reviews),在右侧可以看到流量监控信息,显示流量、成功率和持续时间的实时数据:
KubeSphere 提供基于 Jaeger 的分布式追踪功能,用来对基于微服务的分布式应用程序进行监控及故障排查。
若一切运行顺利,则可以将所有流量引入新版本:
在任务状态中,点击金丝雀发布任务
在弹出的对话框中,点击 reviews v2 右侧的 ,选择接管。这代表 100% 的流量将会被发送到新版本 (v2)
如果新版本出现任何问题,可以随时回滚到之前的 v1 版本
再次访问 Bookinfo,多刷新几次浏览器,您会发现页面只会显示 reviews v2 的结果(即带有黑色星标的评级)
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。