通过Kong实现金丝雀发布

匿名 (未验证) 提交于 2019-12-02 23:55:01

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

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

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"} }
  • 测试一下,注意多点几下
  • 现在灰度上了新版本,我们要切一部分流量过去:
/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 }

相当于切换了五分之一的流量过去

  • 测试一下,点击多次,才会出现下面这个小姐姐

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!