通过Kong实现金丝雀发布

金丝雀发布(Canary Releases)的由来

17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。

Kong的金丝雀发布简述

金丝雀发布又称灰度发布,是指在我们的生产环境中划分出一部分节点为灰度节点,当上新版本的时候,先上灰度环境并且会切换一部分流量过来,当灰度环境的流量都没有问题的时候,就会在整个生产环境上新版本。
我理解的可能有问题,请留言或者进群讨论一下

Kong的金丝雀发布的实现

假设生产环境的状况如下:
通过Kong实现金丝雀发布

  • 创建upstream
upstreams/   POST
{
	"name":"xjj.tv.com"
}
  • 创建target
#灰度版本的target
/upstreams/b7208664-4c0b-4c64-98a2-683594bb1bfd/targets POST

{
	"target":"172.16.0.92:8899",
	"weight": 0
}
#生产版本
/upstreams/b7208664-4c0b-4c64-98a2-683594bb1bfd/targets POST
{
	"target":"172.16.0.92:8810",
	"weight": 1000
}
  • b7208664-4c0b-4c64-98a2-683594bb1bfd 是上传面创建的upstream的id
  • 创建service
services POST
{
"name": "xjj.yv.com",
"protocol":"http",
"host":"xjj.tv.com",
"path":"/",
"read_timeout":6000
}
  • 创建路由
routes  POST
{
"protocols": ["http"],
"methods": ["GET"],
"paths": ["/xjj_tv"],
"service":{"id":"2fc52878-1fe9-48ba-bc45-146da3822851"}
}
  • 测试一下,注意多点几下
    通过Kong实现金丝雀发布
  • 现在灰度上了新版本,我们要切一部分流量过去:
/upstreams/b7208664-4c0b-4c64-98a2-683594bb1bfd/targets POST
{
	"target":"172.16.0.92:8810",
	"weight": 800
}
/upstreams/b7208664-4c0b-4c64-98a2-683594bb1bfd/targets POST
{
	"target":"172.16.0.92:8899",
	"weight": 200
}

相当于切换了五分之一的流量过去
通过Kong实现金丝雀发布

  • 测试一下,点击多次,才会出现下面这个小姐姐
    通过Kong实现金丝雀发布

先写到这里了,有问题进QQ群630300475

上一篇:原创 | 微服务网关 Kong 科普


下一篇:API网关——Kong实践分享