KubeSphere实现金丝雀发布(Canary Release)
0 前言
KubeSphere 基于 [Istio] 向用户提供金丝雀发布功能,即:
- 引入服务的新版本,并向其发送一小部分流量来进行测试
- 同时,旧版本负责处理其余的流量
- 如果一切顺利,就可逐渐增加向新版本发送的流量,同时逐步停用旧版本
- 如出现任何问题,可用 KubeSphere 更改流量比例来回滚至先前版本
该方法能高效测试服务性能和可靠性,有助在实际环境发现潜在问题,又不影响系统整体稳定性。canary-release-0
环境前提
- 启用 KubeSphere 服务网格
- 启用 KubeSphere 日志系统以使用 Tracing 功能
- 创建一个企业空间、一个项目和一个用户 (
project-regular
)。请务必邀请该用户至项目中并赋予operator
角色。参见创建企业空间、项目、用户和角色 - 开启应用治理并有一个可用应用,以便实现该应用的金丝雀发布。本教程使用示例应用 Bookinfo。参见部署 Bookinfo 和管理流量。
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 版本之间切换:
相信大家一眼就看出区别了:
金丝雀发布任务创建后会显示在任务状态选项卡下:
点击该任务查看详情可看到每个版本分别收到一半流量,新的部署也已创建:
可执行以下命令直接获取虚拟服务来识别权重:
kubectl -n demo-project get virtualservice -o yaml
- 当您执行上述命令时,请将
demo-project
替换为您自己项目(即命名空间)的名称。 - 如想在 KubeSphere 控制台使用 Web kubectl 执行命令,则需要使用
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
...
3 查看网络拓扑
在运行 KubeSphere 的机器执行以下命令引入真实流量,每 0.5 秒模拟访问一次 Bookinfo。
watch -n 0.5 "curl http://productpage.demo-project.192.168.0.2.nip.io:32277/productpage?u=normal"
将命令中的主机名和端口号替换成自己环境的。
-
在流量监控中,可看到不同服务之间的通信、依赖关系、运行状态及性能
-
点击组件(例如 reviews),在右侧可以看到流量监控信息,显示流量、成功率和持续时间的实时数据:
4 查看链路追踪详情
KubeSphere 提供基于 Jaeger 的分布式追踪功能,用来对基于微服务的分布式应用程序进行监控及故障排查。
- 在链路追踪选项卡中,可以清楚地看到请求的所有阶段及内部调用,以及每个阶段的调用耗时。
- 点击任意条目,可以深入查看请求的详细信息及该请求被处理的位置(在哪个机器或者容器)。
5 接管所有流量
若一切运行顺利,则可以将所有流量引入新版本:
-
在任务状态中,点击金丝雀发布任务
-
在弹出的对话框中,点击 reviews v2 右侧的 ,选择接管。这代表 100% 的流量将会被发送到新版本 (v2)
如果新版本出现任何问题,可以随时回滚到之前的 v1 版本
-
再次访问 Bookinfo,多刷新几次浏览器,您会发现页面只会显示 reviews v2 的结果(即带有黑色星标的评级)
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。
参考:
本文由博客一文多发平台 OpenWrite 发布!