ASM網關支援灰階升級,能夠提供流暢的升級體驗。本文以ASM原地升級為例,介紹如何使用ASM網關的灰階升級功能。
前提條件
已添加叢集到ASM執行個體,且ASM版本為1.20及以上。關於升級ASM的具體操作,請參見升級ASM執行個體。
已建立入口網關。
背景資訊
網關作為業務的流量總入口和總出口,對可用性有著極高的要求。為了更好地保證升級後業務的連續性,ASM網關支援灰階升級。您可以通過配置先啟動一個新版本的網關Pod來驗證流量,驗證通過後再完全升級網關。驗證過程中如果出現任何問題,您可以隨時刪除這個新版本的Pod,問題解決後再繼續升級。
ASM網關的灰階升級與ASM的金絲雀升級並不相同。無論您使用ASM的原地升級還是金絲雀升級,ASM網關的灰階升級均可以使用。
網關灰階升級介紹
ASM的控制面升級和資料面升級是分離的,您可以在控制面升級完成後再升級資料面。網關灰階升級的原理如下:
建立一個與當前控制面版本對應的網關單副本Deployment,這個Deployment被稱為Canary Deployment。它和網關原本的Deployment同時屬於一個Service,不同點是這個Deployment後面會加上-canary
的尾碼。
如果網關命名空間中原本存在帶了-canary
尾碼的同名Deployment,此時不會覆蓋該Deployment。使用該功能前,請確保不存在帶-canary
尾碼的同名Deployment。例如,如果網關名稱為ingressgateway,請確保istio-system命名空間下沒有名稱為istio-ingressgateway-canary的Deployment。
ASM原地升級
控制面升級完成後,此時網關還是舊版本。您可以先建立Canary Deployment。Canary Deployment就緒後,部分流量就會被分配到這個灰階副本。此時觀察灰階副本上的流量是否正常。如果不正常,保留現場日誌,刪除灰階副本。解決問題後重新部署灰階副本進行驗證。驗證無誤之後,將網關升級至新版本。
ASM金絲雀升級
網關的灰階升級同樣支援在ASM金絲雀升級中使用。在ASM金絲雀升級過程中,將新版本切換為預設控制面之後,此時網關處於待升級狀態。您可以部署網關的灰階副本進行驗證,驗證無誤後升級網關。
網關升級到新版本之後,您可以通過配置刪除部署的灰階副本。
步驟一:升級控制面
為了盡量在升級過程中降低流量損失的風險,請在升級前開啟網關的優雅下線功能。具體操作,請參見使用優雅下線功能避免流量損失。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在升級管理頁面的原地升級頁簽,單擊運行檢查,在重要提示對話方塊,單擊確定。
說明若頁面顯示當前已為最新版本,無需升級,表明網格是最新版本,無法進行升級操作。
升級預檢查通過後,單擊開始升級,在重要提示對話方塊,單擊確定。
步驟二:部署ASM網關的灰階副本
ASM網關的灰階副本通過Annotation開啟。
在ASM網關的YAML中添加
asm.alibabacloud.com/enable-canary-deployment: "true"
的Annotation,部署一個灰階副本。方式一:通過ASM控制台
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊目標網關右側的查看YAML,在編輯對話方塊,將
asm.alibabacloud.com/enable-canary-deployment: "true"
註解添加到metadata
欄位下的annotations
中,然後單擊確定。
方式二:通過kubectl命令
執行以下命令,開啟ASM網關的YAML檔案。
kubectl edit IstioGateway <YOUR-INGRESSGATEWAY-NAME> -n istio-system
編輯YAML檔案,將
asm.alibabacloud.com/enable-canary-deployment: "true"
註解添加到metadata
欄位下的annotations
中,然後進行儲存。
使用資料面KubeConfig,執行以下命令,查看部署的灰階副本。
本樣本網關名稱為
ingressgateway
,請您根據實際情況進行替換。kubectl -n istio-system get deployment | grep ingressgateway
預期輸出:
istio-ingressgateway 1/1 1 1 10m istio-ingressgateway-canary 1/1 1 1 55s
帶有
-canary
尾碼的Deployment即為灰階副本。灰階副本就緒後,會有部分流量進入對應的Pod,此時請觀察到達該網關的流量是否正常。如果出現異常,請保留網關日誌,刪除配置的Annotation。該灰階副本會被刪除,所有流量將全部流向舊版本網關副本。問題解決後,重新部署灰階副本進行驗證。
步驟三:驗證無誤後,升級網關
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在資料平面地區的升級列,選中目標網關,單擊升級網關,在重要提示對話方塊,單擊確定,等待網關升級完成。
步驟四:刪除灰階副本
網關升級完成後,刪除步驟二中增加的Annotation,灰階副本會被自動刪除。
灰階副本永遠跟隨控制面的版本,如果不刪除,灰階副本會在下次升級控制面時同步升級。