金絲雀發佈(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