灰度發布是服務治理領域中最重要的策略之一。當需要上線新的功能時,您可以使用灰度發布功能在小范圍內進行新版本測試,待驗證通過后再進行全量升級。本文以Spring Cloud微服務應用為例,介紹在Serverless 應用引擎 SAE(Serverless App Engine)灰度發布微服務的操作步驟。
前提條件
已部署微服務應用,其中包含1個Consumer應用和1個Provider應用。示例操作,請參見以下文檔:
根據應用類型判斷是否需要開通微服務引擎 MSE(Microservices Engine)微服務治理專業版。具體操作,請參見開通MSE微服務治理。
存量應用:2023年11月08日00:00前創建的應用,無需開通MSE服務治理專業版或企業版,后續部署應用也不會產生MSE計費。
新增應用:2023年11月08日00:00起新建的應用,使用無損上下線與灰度規則功能需要開通MSE微服務治理專業版,使用限流降級功能需要開通MSE微服務治理企業版。用戶升級MSE企業版后,未開啟限流降級功能的應用依然按照專業版進行計費,只有開啟限流降級功能的應用才會按照企業版計費。
關于MSE微服務治理計費的更多信息,請參見計費概述和【產品變更】SAE集成的MSE微服務治理功能商用通知。
Consumer應用和Provider應用的示例工程如下:
背景信息
Consumer應用調用Provider應用時,Provider應用有版本V1和版本V2。通過創建灰度規則,指定Header的Version參數為V1的流量都灰度到Provider應用的V1版本。灰度發布微服務流程,如下圖所示:
使用限制
Spring Cloud微服務應用需要使用JAR包或者鏡像方式部署。使用WAR包部署會導致配置失效。
步驟一:創建灰度規則
登錄SAE控制臺。
在左側導航欄,選擇 ,在頂部菜單欄選擇地域,然后單擊具體應用名稱。
進入灰度規則頁面。
存量應用:在左側導航欄,單擊灰度規則,然后在灰度規則頁面,單擊新建灰度規則。
新增應用:在左側導航欄,選擇
,然后在灰度規則頁面,單擊新建灰度規則。說明如果您是第一次使用該功能,需要在該頁面單擊開啟微服務治理并刷新頁面,才能配置灰度規則。
在新建灰度規則面板,執行以下操作,然后單擊確定。
SAE支持的灰度規則是按內容灰度,您所需配置的信息會因應用框架而異。
配置項
說明
規則類型
七層流量灰度(K8s ingress):可以實現在灰度批次發布過程中,將特定標記的七層流量打到灰度批次的實例上。
微服務流量灰度:可以實現在灰度批次發布過程中,將特定標記的流量打到灰度批次的實例上。
規則名稱
設置灰度規則名稱。
規則描述
對灰度規則的自定義描述。
灰度類型
根據內容灰度。
網關實例(ALB ingress)
當規則類型為七層流量灰度(K8s ingress)時需要配置。
SAE基于ALB實現的網關路由(Ingress),具備根據域名、路徑路由到不同應用的能力。您需要先為應用配置ALB實例,并創建路由規則。具體操作,請參見為應用設置路由規則(ALB)。
灰度的服務
當規則類型為七層流量灰度(K8s ingress)時需要配置。
選擇需要灰度的應用及對應端口。
框架類型
當規則類型為微服務流量灰度時需要配置。
配置灰度規則應用的框架類型。
Spring Cloud:需要設置Path。
Dubbo:需要選擇服務方法。
條件模式
當規則類型為微服務流量灰度時需要配置。配置灰度規則應用的條件模式。
選擇同時滿足下列條件或滿足下列任一條件。
條件列表
單擊+添加新的規則條件,可以添加多條規則。
微服務灰度流量
Spring Cloud:根據參數類型Cookie、Header或Parameter,設置相應的參數、條件以及值。
Dubbo:根據應用實際情況,設置參數、參數值獲取表達式、條件以及值。
七層流量灰度
根據參數類型Cookie、Header或來源ip,設置對應的參數與值。
針對微服務流量灰度,您還可以單擊+新建流量規則,創建多個入口流量規則,多個規則可以同時生效。新增的灰度規則會顯示在灰度規則列表中。
創建成功后,可以在灰度規則頁面,查看剛創建的灰度規則。單擊目標規則名稱,可以在灰度規則詳情面板,查看規則內容。Spring Cloud應用灰度規則的示例如下。
步驟二:配置灰度發布策略
登錄SAE控制臺。
在左側導航欄,選擇 ,在頂部菜單欄選擇地域,然后單擊具體應用名稱。
在基本信息頁面右上角,單擊部署應用。
配置部署參數。
說明部署方式由應用首次部署方式決定,請根據所需的部署方式設置參數。
WAR包部署:重新上傳WAR包或者輸入新部署WAR包的地址,并完成相關環境和參數設置。
JAR包部署:重新上傳JAR包或者輸入新部署JAR包的地址,并完成相關環境和參數設置。
鏡像:在配置鏡像區域,單擊修改鏡像,在修改鏡像面板,重新選擇鏡像倉庫或鏡像版本。
在發布策略設置區域,配置灰度發布信息。
配置項 說明 發布策略 選擇灰度發布。 灰度數量 設置首先需要進行灰度發布的應用實例數量。 灰度后剩余批次 灰度發布后,剩余的應用實例按照設定的批次完成發布。 分批間處理方式 當剩余批次大于1時需要配置。選擇自動或手動。 分批間隔時間 當分批間處理方式選擇自動時需要配置。單位為分鐘,取值范圍為[0,30]。 批次內部署間隔 每一批內,如果應用實例數大于1,應用實例間的部署時間間隔。單位為秒。 最小存活實例數 每次滾動升級最小存活的實例數。
按個數:輸入最小存活實例數。您也可以選中使用系統推薦值,即取現有實例數的25%。
按比例:輸入百分比。
說明每次滾動部署最小存活的實例數建議≥1,保證業務不中斷。如果設置為0,應用在升級過程中將會中斷業務。
以百分比計算時需向上取整。例如設置為25%,如果當前為5個實例,則最小存活實例數為2。
啟用微服務灰度規則 您為Spring Cloud或Dubbo應用創建的灰度規則。具體操作,請參見管理灰度規則(Java)。 單擊確認完成發布設置。
選擇以下任一方式驗證發布結果。
方法一:在應用的變更記錄頁面中查看應用變更詳情,查看發布狀態,如果所有批次都執行成功,則說明應用更新成功。
方法二:在應用基本信息頁面的實例部署信息頁簽查看實例的運行狀態。如果執行狀態顯示為Running,且實例的版本已變更,表示應用部署成功。
步驟三:通過Consumer訪問驗證
通過請求Consumer應用訪問Provider應用,驗證流量灰度發布到了指定實例。具體操作,請參見使用Webshell診斷應用。