基本概念
- 灰度版本
一個服務僅支持發布一個灰度版本,可以對灰度版本配置相應的灰度策略。
- 灰度策略
當您需要在生產環境發布一個新的待上線版本時,您可以選擇添加一個灰度版本,并配置相應的灰度策略,將原有的生產環境的默認版本的流量引流一部分至待上線版本。經過評估穩定后,可以將此灰度版本接管所有流量,下線原來的版本,從而接管原有的生產環境的版本上的流量。
創建灰度發布
步驟 1 登錄應用服務網格控制臺,使用以下任意一種方式進入創建灰度任務頁面。
- (快捷方式)在網格右上方,單擊
圖標。 - (快捷方式)在網格中心位置,單擊“創建灰度任務”。
- 在網格詳情頁創建。
a.單擊網格名稱,進入網格詳情頁,單擊左側導航欄的“灰度發布”。
b.如果當前不存在發布中的灰度任務,請在金絲雀發布或藍綠發布中單擊“立即發布”;如果當前存在發布中的灰度任務,請單擊右上角“灰度發布”。
步驟 2 配置灰度發布基本信息。
- 灰度類型
選擇創建灰度發布的類型,可根據實際需求選擇金絲雀發布和藍綠發布。
- 灰度任務名稱
自定義灰度任務的名稱。輸入長度范圍為4到63個字符,包含小寫英文字母、數字和中劃線(-),并以小寫英文字母開頭,小寫英文字母或數字結尾。
- 命名空間
服務所在的命名空間。
- 灰度發布服務
在下拉列表中選擇待發布的服務。正在進行灰度任務的服務不可再進行選擇,列表中已自動過濾。
- 工作負載
選擇服務所屬的工作負載。
- 版本號
當前服務版本號,版本號不支持修改。
圖 灰度發布基本信息

步驟 3 部署灰度版本信息。
- 部署集群
灰度發布服務所屬的集群。
- 版本號
輸入服務的灰度版本號。
- 實例數量
灰度版本的實例數量。灰度版本可以有一個或多個實例,用戶可根據實際需求進行修改。每個灰度版本的實例都由相同的容器部署而成。
- 鏡像名稱
默認為該服務的鏡像。
- 鏡像版本
請選擇灰度版本的鏡像版本。
圖 灰度版本信息

步驟 4 單擊“發布”,灰度版本開始創建。
請確保灰度版本的實例狀態正常,且啟動進度為100%時,再開始下一步進行流量策略的配置。發布之后進入觀察灰度狀態頁面,可查看Pod監控,包括啟動日志和性能監控信息。
步驟 5(僅金絲雀發布涉及)單擊“配置灰度策略”,進行灰度策略配置。
策略類型:分為“基于流量比例”和“基于請求內容”兩種類型,通過頁簽選擇確定。
- 基于流量比例
根據流量比例配置規則,從默認版本中切分指定比例的流量到灰度版本。例如75%的流量走默認版本,25%的流量走灰度版本。實際應用時,可根據需求將灰度版本的流量配比逐步增大并進行策略下發,來觀測灰度版本的表現情況。
圖 基于流量比例

流量配比:可以為默認版本與灰度版本設置流量配比,系統將根據輸入的流量配比來確定流量在兩個版本間分發的比重。
- 基于請求內容
目前支持基于Cookie內容、自定義Header、Query、操作系統和瀏覽器的規則約束,只有滿足規則約束的流量才可訪問到灰度版本。例如,僅Cookie滿足“User=Internal”的HTTP請求才能轉發到灰度版本,其余請求仍然由默認版本接收。
圖 基于請求內容

?Cookie內容
正則匹配:此處需要您使用正則表達式來匹配相應的規則。
?自定義Header
- 完全匹配:只有完全匹配上才能生效。例如:設置Header的Key=User,Vaule=Internal,那么僅當Header中包含User且值為Internal的請求才由灰度版本響應。
- 正則匹配:此處需要您使用正則表達式來匹配相應的規則。
可以自定義請求頭的key和value,value支持完全匹配和正則匹配。
?Query
- 完全匹配:只有完全匹配上才能生效。例如:設置Query的Key=User,Vaule=Internal,那么僅當Query中包含User且值為Internal的請求才由灰度版本響應。
- 正則匹配:此處需要您使用正則表達式來匹配相應的規則。
可以自定義Query的key和value,value支持完全匹配和正則匹配。
?允許訪問的操作系統:請選擇允許訪問的操作系統,包括iOS、Android、Windows、macOS。
?允許訪問的瀏覽器:請選擇允許訪問的瀏覽器,包括Chrome、IE。
?流量管理Yaml信息:根據所設置的參數自動生成規則YAML。
說明基于請求內容流量策略只對直接訪問的入口服務有效。如果希望對所有服務有效,需要業務代碼對HTTP請求的Header信息進行傳播。
例如:如果您基于reviews服務,配置了基于請求內容的灰度發布策略,通過訪問productpage服務的界面,是無法看到效果的。
原因是,您的客戶端訪問productpage服務攜帶了HTTP請求的Header信息,而productpage服務請求reviews服務時,將這些Header信息丟失了(詳情可參考如何使用Istio調用鏈埋點),從而失去了基于請求內容的灰度發布效果。
步驟 6 設置完成后,單擊“策略下發”。
灰度策略的生效需要幾秒時間,您可以查看服務的流量監控,以及對原始版本及灰度版本的健康監控。