本期是Istio技術實踐專題的最后一個模塊,主題是Istio的路由控制與灰度發布。
上一期我們講到,虛擬服務(Virtual Service)以及目標規則(Destination Rule)是 Istio 流量路由的兩大基石。虛擬服務可以將流量路由到 Istio 服務網格中的服務。每個虛擬服務由一組路由規則組成,這些路由規則按順序進行評估。
如果沒有 Istio virtual service,僅僅使用 k8s service 的話,那么只能實現最基本的流量負載均衡轉發,但是就不能實現類似按百分比來分配流量等更加復雜、豐富、細粒度的流量控制了。
使用Istio的流量管理模型,本質上是將流量與基礎設施擴容進行解耦,讓運維人員可以通過Pilot指定流量遵循什么規則,而不是指定哪些pods/VM應該接收流量。通過將流量從基礎設施擴展中解耦,就可以讓 Istio 提供各種獨立于應用程序代碼之外的流量管理功能。這些功能都是通過部署的Envoy sidecar代理來實現的。
在使用 Istio實現灰度發布的情況下,流量路由和副本部署是兩個完全獨立的功能。服務的 pod 數量可以根據流量負載靈活伸縮,與版本流量路由的控制完全無關。這在自動縮放的情況下能夠更加簡單地管理金絲雀版本。
Istio收官之講:路由控制與灰度發布
在靈雀云ASM平臺中單獨做了自動化灰度發布的功能。我們創建灰度規則時,將復制原服務版本(金絲雀)配置,創建出后綴為primary的服務版本(主版本),同時流量將全部切換至主版本,金絲雀版本實例數調度為0。通過更新金絲雀版本配置觸發灰度發布,灰度發布時,調度金絲雀版本實例,并按照發布規則將流量切換至配置更新后的金絲雀版本。發布完成后,將金絲雀配置復制到主版本,金絲雀實例重新調度為0,由主版本提供最新服務。
在發布過程中,流量將每隔“流量增加周期”,按照“每次流量增加比例”分配至灰度版本,直至比例達到100%。同時通過“指標配置”監控灰度版本的流量狀態。若本次增加流量的平均請求成功率小于“最小請求成功比例”,或者平均響應時間大于“最大響應時間”,則異常次數加1,且暫停下個周期流量的增加。暫停期過后,在下次調度開始時,再次檢查流量是否滿足指標配置。若流量異常總次數達到“觸發回滾異常次數”,則進行回滾。
本期視頻分為上下兩輯:
Istio路由控制與灰度發布(上)
https://v.qq.com/x/page/r0976bxupp5.html
Istio路由控制與灰度發布(下)
https://v.qq.com/x/page/a0976m1p7sj.html
至此,“從小白到專家Istio技術實踐”專題已更新九集,課程圓滿完結!
假如你需要微服務架構中引入 Istio,并用它來解決微服務治理中的諸多難題,那么,本系列的內容不可錯過!