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