Knative會管理不同Revision(修訂版本)之間的流量分配。您可以在控制臺為不同Revision設定版本對應的流量比例,然后不斷調整流量比例進行觀察,直到100%的業務流量全部切流至新版本服務,以完成灰度發布服務。
前提條件
已在ACS集群中部署Knative。具體操作,請參見部署Knative。
步驟一:創建Knative服務
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,單擊目標集群ID,然后在左側導航欄,選擇
。在Knative頁面的服務管理頁簽下,選擇命名空間為default,然后單擊創建服務,部署一個名為helloworld-go的服務,部署完成后單擊創建。
關鍵配置項如下所示,更多配置項信息,請參見快速部署一個Knative服務。
配置項
說明
命名空間
選擇該服務所屬的命名空間。
服務名稱
自定義該服務的名稱,本例服務名稱為helloworld-go。
鏡像名稱
您可以單擊選擇鏡像,在彈出的對話框中選擇所需的鏡像并單擊確定。您還可以填寫私有registry。填寫的格式為domainname/namespace/imagename:tag。本例中為registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go。
鏡像版本
您可以單擊選擇鏡像版本選擇鏡像的版本。若不指定,默認為latest。本例中鏡像版本為73fbdd56。
訪問協議
支持HTTP和gRPC兩種訪問協議。
說明說明
gRPC是基于HTTP2協議標準設計和ProtoBuf(Protocol Buffers)序列化協議開發的,且支持眾多開發語言。與HTTP相比,HTTP2在發送和接收方面更緊湊和高效。
容器端口
設置暴露的容器訪問端口,端口號必須介于1~65535。
若目標服務的狀態列顯示成功,表明服務已部署成功。
在服務管理頁面的默認域名和訪問網關列,分別獲取
helloworld-go
服務的域名和網關地址。執行以下命令,訪問
helloworld-go
服務。curl -H "host: <默認域名>" http://<訪問網關IP> # 網關IP和默認域名請以您的實際數據為準。
預期輸出:
Hello World!
預期輸出表明,服務已創建成功并可以正常訪問。
步驟二:通過創建修訂版本灰度發布服務
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,單擊目標集群ID,然后在左側導航欄,選擇
。創建修訂版本。
選擇服務管理頁簽,然后單擊目標服務右側操作列下的詳情。
單擊創建修訂版本,在基本信息配置向導步驟,單擊高級設置,設置最新修訂版本的環境變量為
TARGET=Knative
,然后單擊下一步。在流量設置配置向導步驟,設置最新修訂版本的流量比例為0,單擊創建。
說明所有修訂版本的流量比例之和需要等于100。
創建完成后,選擇服務管理頁簽,可以看到新創建服務版本的詳細信息。
執行以下命令,訪問
helloworld-go
服務。curl -H "host: <默認域名>" http://<訪問網關IP> # 替換為實際的網關IP和默認域名。
預期輸出:
Hello World!
預期輸出結果表明,服務已創建成功并可以正常訪問。由于新版本服務的流量比例為0,所以訪問helloworld-go服務,還是請求到舊版本的服務。
修改流量比例灰度發布服務。
在服務管理頁面,單擊目標服務右側操作列下的詳情。
單擊設置流量比例,在設置流量比例對話框,將新版本和舊版本的流量比例都設置為50%,然后單擊確定。
服務流量比例設置成功后,選擇服務管理頁簽,可以看到新版本和舊版本服務的詳細信息。
執行以下命令,訪問服務。
while true; do curl -H "host: <默認域名>" http://<訪問網關IP>; slesp 1; done # 網關IP和默認域名請以您的實際數據為準。
說明這個命令會一直運行,直到您手動停止它。如果您只想觀察一段時間,可以按
Ctrl + C
組合鍵來終止命令的運行。預期輸出:
Hello World! Hello Knative! Hello World! Hello Knative! Hello World! Hello Knative! ...
由于新、舊版本的流量比例各為50%,所以當前訪問helloworld-go服務的話,基本是按50%進行流量分配。
您可以通過調整流量比例繼續灰度發布服務,直到新版本服務的流量比例為100%,完成灰度發布服務。在這個過程中,如果發現新版本有問題,您可以隨時通過調整流量比例的方式進行回滾操作。
相關文檔
您可以基于流量請求數實現Knative服務的自動擴縮容,請參見基于流量請求數實現服務自動擴縮容。