為避免到期版本執行個體存在的安全和穩定性風險,同時保證您業務的連貫性,Service MeshASM支援通過原地升級或金絲雀升級的方式升級控制平面和資料平面。本文介紹ASM執行個體升級前後的注意事項和說明、升級路徑、升級流程和操作步驟等。
前提條件
相關概念
為什麼需要升級
ASM原則上保持每三個月更新一次Istio大版本的頻率。大版本推出後,由於功能更新和漏洞修複,ASM會不定期推出補丁版本(例如1.19.x.y)的更新。到期的ASM執行個體版本存在安全和穩定性風險,建議您及時進行升級操作。關於ASM支援的版本,請參見版本機制。
主動升級ASM執行個體有以下好處:
降低安全和穩定性風險:隨著ASM版本迭代,會不斷最佳化及修複發現的安全及穩定性漏洞,長久使用到期版本執行個體會給業務帶來安全和穩定性風險。
享受更好的維護支援:對於到期的執行個體版本,ASM不再提供安全補丁和問題修複,也無法保證到期版本的支援人員品質。使用新版本能夠讓您享受更好的支援人員和答疑服務。
使用新版本的新功能:隨著社區Istio版本的演化,新版本包含新的功能和改進,ASM也將適配新版本,為您帶來更好的開發和營運體驗。
升級注意事項和說明
注意事項
網格升級需要您手動重啟資料面Pod以完成新版本Sidecar的重新注入,建議您在業務低峰期進行升級操作。
手動升級ASM網關將觸發滾動重啟。
升級期間請勿進行灰階發布、流量規則配置等操作。
原地升級執行個體時,ASM會對您的執行個體進行升級預檢查,但無法保證檢查出所有不相容的功能配置和API。您可以根據協助文檔、控制台資訊、站內信等渠道關注版本發布情況,在執行個體升級時提前瞭解相應版本的升級注意事項。
基於安全原因,ASM有以下機制:
ASM保留強制升級到期版本執行個體的權利(在執行個體版本到期後的某個時間,強制升級執行個體到支援中的最早版本),建議您參照下文提前主動升級執行個體。
對於補丁版本的升級(例如從v1.18.0.123升級到v1.18.0.146),在不發送通知的情況下,系統會不定期完成自動熱更新。自動熱更新時,資料面網關和Sidecar代理版本保持不變。
原地升級說明
原地升級僅支援相鄰版本升級,不支援跨版本升級,也不支援回退。
金絲雀升級說明
相比於原地升級,金絲雀升級方式可以支援先驗證新版本,確認功能驗證無誤後再切換為目前的版本,為業務提供一種更穩妥的升級方式。金絲雀升級支援最多跨一個次要版本升級,過程中支援回退。
類型 | 說明 |
適用版本 | 企業版或旗艦版執行個體,且版本為1.16.4.91及以上。 |
適用情境 |
說明 僅asm-patch版本有變化的情境,建議您採用原地升級方式。 |
版本格式 | ASM版本的格式為<major>.<minor>.<patch>.<asm-patch>[-<sequence>-aliyun],例如v1.18.0.158-gc6cf0b9c-aliyun(企業版),欄位說明如下:
|
Sidecar注入標籤說明
當一個ASM執行個體開啟金絲雀升級後,對應這個ASM執行個體的控制面會同時存在兩個版本,例如從1.17.2.42版本金絲雀升級到1.18.0的某個版本,會同時存在1.17.2和1.18.0兩個控制面版本。
在金絲雀升級過程中,您可以通過為Kubernetes叢集中的命名空間指定注入標籤,決定命名空間中的工作負載注入的Sidecar版本。預設標籤為istio-injection=enabled
,即注入目前的版本。
當兩個版本同時存在時,Namespace標籤下業務注入的Sidecar版本的映射關係說明如下:
目前的版本
istio-injection=enabled
標籤注入的Sidecar對應為ASM目前的版本,並串連目前的版本對應的控制面。給Namespace打上
istio.io/rev=$revision
標籤,標明需要注入的Sidecar版本,revision
變數格式為x-y-z
,例如1-17-2
。給Namespace打上
istio.io/rev=stable
標籤,標明需要注入的Sidecar版本為當前的ASM版本。
重要一個Namespace下,不能同時存在
istio-injection
和istio.io/rev
兩個標籤。金絲雀版本
當商務服務需要注入金絲雀版本對應的Sidecar時,可以採用給Namespace打上
istio.io/rev=$revision
或istio.io/rev=canary
標籤,其中$revision
對應的格式為版本的x-y-z
,例如1-18-0
。建議您使用istio.io/rev=$revision
標籤。關於金絲雀版本的操作樣本,請參見使用金絲雀模式增強升級穩定性。
升級路徑、方式和流程
升級路徑
此處以1.16升級到1.18版本為例進行說明,僅作為參考,請您以實際的作業環境為準。
起始版本 | 目標版本 | 升級方式 |
1.16.4.93 | 1.17.2.42 | 原地升級或金絲雀升級 |
1.17.2.42 | 1.18.0.158 | 原地升級或金絲雀升級 |
1.16.4.93 | 1.18.0.158 | 金絲雀升級 |
升級方式
ASM控制台:支援原地升級和金絲雀升級。具體操作,請參見操作步驟。
API:支援原地升級。具體操作,請參見UpgradeMeshVersion、DescribeUpgradeVersion和DescribeServiceMeshUpgradeStatus。
升級流程
請您確認升級的版本和方式,瞭解升級注意事項和說明後,再進行升級操作。
操作步驟
原地升級
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在升級管理頁面的原地升級頁簽,單擊運行檢查,在重要提示對話方塊,單擊確定。
升級預檢查通過後,單擊開始升級,在重要提示對話方塊,單擊確定。
在資料平面地區的升級列,選中目標網關,單擊升級網關,在重要提示對話方塊,單擊確定。
按需重啟工作負載。具體操作,請參見重新部署工作負載。
金絲雀升級
具體操作,請參見使用金絲雀模式增強升級穩定性。
升級常見問題
當金絲雀版本切換為正式版本時,對應之前部署的商務服務注入的Sidecar為老版本,如何升級到新版本?
您可以在升級管理頁面單擊金絲雀升級頁簽,然後單擊資料面頁簽,在待升級工作負載地區,單擊目標工作負載右側的滾動升級,觸發商務服務Deployment的變換。
原地升級會影響現有的服務流量接入嗎?
原地升級隻影響控制面,不會影響資料面的流量。
ASM執行個體需要升級多少次才能到目標版本?
原地升級僅支援相鄰大版本升級,金絲雀升級支援最多跨一個次要版本升級。您可以按照實際情況進行計算。
ASM每個版本都可以任意選擇升級方式嗎?
ASM執行個體版本為1.16.4.91以下,僅支援原地升級;1.16.4.91及以上版本,支援原地升級和金絲雀升級。