當您在進行應用迭代升級時面臨新版本相容性和穩定性挑戰時,可以在Knative on ASM中基於流量灰階發布服務。建立Knative服務時,系統會自動建立第一個修訂版本Revision,隨著服務配置的每次更新變化,Knative都會自動產生新的修訂版本,並通過靈活調整發往不同修訂版本的流量比例,實現對新版本的精準、即時驗證,從而顯著降低大規模部署新版本可能引發的潛在風險,保障服務的連續性、使用者體驗以及問題的及時發現與修複。
前提條件
已使用Knative on ASM建立Knative服務。具體操作,請參見使用Knative on ASM部署Serverless應用。
本樣本以預設網域名稱example.com為例為您示範功能。如需使用自訂網域名, 請參見在Knative on ASM中使用自訂網域名。
通過控制台建立修訂版本
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊服務管理頁簽,在服務列表,單擊目標服務名稱,然後在頁面右上方,單擊建立修訂版本。
在基本資料設定精靈的下方,單擊進階設定,然後單擊環境變數右側的新增,設定最新修訂版本的類型為自訂,變數名稱為TARGET,變數/變數引用為Knative on ASM,然後單擊下一步。
在流量設定設定精靈,設定最新修訂版本的流量比例%為0,舊版本服務為100,然後單擊建立。
說明所有修訂版本的流量比例百分比之和需等於100。
建立完成後,您可以單擊服務管理頁簽,在服務列表,單擊目標服務名稱,然後在修訂版本資訊地區查看新建立服務版本的詳細資料。
執行以下命令,訪問服務。
curl http://helloworld-go.default.example.com
預期輸出:
Hello Knative!
預期輸出表明,由於新版本服務的流量比例為0,訪問helloworld-go服務時仍然會請求到舊版本的服務。
修改流量比例灰階發布服務
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊服務管理頁簽,在服務列表單擊目標服務名稱,在頁面右上方單擊設定流量比例,在設定流量比例對話方塊,將新版本和舊版本的流量比例均設定為50,然後單擊確定。
服務流量比例設定成功後,單擊服務管理頁簽,在服務列表,單擊目標服務名稱,然後在修訂版本資訊地區查看新版本和舊版本服務的詳細資料。
執行以下命令,訪問服務。
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;
預期輸出:
Hello Knative on ASM! Hello Knative on ASM! Hello Knative! Hello Knative on ASM! Hello Knative! Hello Knative! Hello Knative! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative! Hello Knative on ASM! Hello Knative! Hello Knative on ASM! Hello Knative on ASM! Hello Knative! Hello Knative!
預期輸出表明,由於新、舊版本的流量比例各為50%,所以當前訪問helloworld服務時,基本按照50%的比例進行流量分配,修改流量比例灰階發布服務成功。
繼續設定流量比例灰階發布服務,直到新版本服務的流量比例為100%。
流量比例調整過程中,如果發現新版本存在問題,請隨時調整流量比例進行復原操作。
執行以下命令,再次訪問服務。
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;
預期輸出:
Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM! Hello Knative on ASM!
預期輸出表明,由於新版本服務的流量比例為100%,訪問helloworld-go服務時,所有流量都分配至新版本,即灰階發布服務成功。
相關文檔
Knative Serving為每個Pod注入QUEUE代理容器(queue-proxy)。該容器負責向Autoscaler報告業務容器的並髮指標。接收到這些指標之後,Autoscaler會根據並發請求數及縮放演算法,調整Deployment的Pod數量,從而實現自動擴縮容。具體操作,請參見基於流量請求數實現服務自動擴縮容。