通過ECS方式接入的應用,以及部署在阿里云容器服務 Kubernetes 版集群中的Spring Cloud或Dubbo微服務應用,可以使用金絲雀發布(即灰度發布)進行小規模驗證。在金絲雀發布中,新版本的應用會先部署在一小部分服務器上,然后通過小部分用戶的流量進行驗證,通過驗證后再全量升級,以確保其升級的安全性。本文以部署在阿里云容器服務 Kubernetes 版集群中的Spring Cloud微服務應用為例,介紹如何配置金絲雀發布。
前提條件
已在ACK集群中安裝MSE治理中心組件,并為ACK授予MSE治理中心的訪問權限。具體操作,請參見ACK微服務應用接入MSE治理中心。
使用限制
金絲雀發布功能只適合在單個應用的金絲雀發布場景下使用,若有更復雜的場景,請使用全鏈路灰度。具體操作,請參見基于MSE云原生網關實現全鏈路灰度。
操作流程
金絲雀發布的過程如下:
初始狀態
假設有2個服務Order-Service和Pay-Service,Order-Service作為Consumer服務會去調用Pay-Service提供的服務。在您沒有接入MSE治理中心之前,Order-Service和Pay-Service都對應一個Deployment應用,并且沒有設置任何標簽。
部署灰度版本
為Pay-Service部署灰度版本。此時Pay-Service新建一個Deployment應用表示灰度版本,并設置標簽。具體操作,請參見在ACK中為應用接入MSE微服務治理并設置標簽。
默認情況下,MSE治理中心會讓100%的流量轉發至沒有設置標簽的Deployment應用。
設置流量規則
為Pay-Service設置流量規則:HTTP HEADER中env=test。此時滿足該規則的流量會轉發至灰度Deployment應用,其他流量轉發至正常Deployment應用。
調整流量比例
為灰度版本調整流量比例,讓更多的流量轉發至灰度Deployment應用。
滿足流量規則的流量會轉發至灰度Deployment應用,不滿足流量規則的流量有20%的概率轉發至灰度Deployment應用。
完成灰度發布
灰度驗證完畢之后,將穩定版本的Deployment應用更新為最新的鏡像,單擊發布完成,此時100%的流量轉發至穩定版本Deployment應用。
建議您將灰度的Deployment應用副本數改為0,無需重復創建Deployment應用。
操作步驟
本文主要介紹的是配置流量規則的步驟,其他步驟請根據金絲雀發布頁面的提示完成。
登錄MSE治理中心控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇治理中心 > 應用治理。
在應用列表頁面,單擊目標應用的資源卡片,然后在左側導航欄單擊流量治理。
單擊金絲雀頁簽,根據使用說明的步驟完成金絲雀發布。
發布前檢查。
部署新版本。
引入流量。單擊STEP 3右側的引入流量或單擊金絲雀頁簽下方的引入流量,配置流量規則。然后單擊確定。
重要如果您只需要通過流量百分比進行驗證,可以通過按比例灰度配置應用實例的流量比例。
如果您需要進行精細化的驗證,可以同時配置按比例灰度和按內容灰度,將流量比例規則和內容規則進行結合。
按比例灰度
參數
描述
標簽
顯示應用的標簽。
是否鏈路傳遞
顯示當前實例是否支持鏈路傳遞。
實例數量/實際比例
顯示應用的實例數量和實例當前所占的流量比例。
流量比例
設置流量百分比。
最后操作時間
顯示當前應用最新的操作時間。
重要流量規則驗證成功后,再調大灰度版本流量比例,建議逐漸調大灰度版本的流量比例。
按內容灰度
參數
描述
框架類型
根據實際應用自動生成相應的框架類型。
Path
選擇服務路徑,也可單擊右側的切換為自定義輸入手動輸入路徑。
條件模式
包含同時滿足下列條件或滿足下列任一條件,根據實際需求選擇。
條件列表
設置條件參數,當有多個條件規則時,可單擊+添加新的規則條件。
可以設置Cookie、Header、Parameter和Body Content四種類型的參數。例如:
Cookie:
hello = "world" 或 "world2"
Parameter:
name=newversion
是否鏈路傳遞
如果需要使用全鏈路流控,請打開是否鏈路傳遞開關。如需使用,請參見配置標簽路由。
路由規則設置完成后,訪問的請求帶上規則里的參數,這時流量會去訪問灰度Deployment應用。
可選:如果在灰度的過程中,需要更新金絲雀灰度的規則,單擊引入流量,更新流量規則,然后單擊確定。
執行結果
金絲雀驗證成功
單擊發布完成按鈕,未打標版本的流量比例會被調整為100%,配置的流量規則會被暫時關閉。此時所有的流量都會被轉發到未打標的Deployment應用。
發布完成后,建議您將灰度的Deployment應用副本數設置為0,無需重復創建Deployment應用。
金絲雀驗證失敗
單擊回滾按鈕,灰度版本的流量比例會被調整為0%,配置的流量規則會被清除。此時所有的流量都會被轉發到正常Deployment應用,然后可以刪除灰度版本的應用。