服務升級概述
計算巢支持對服務實例進行升級操作,服務商在修復之前版本服務存在問題,或有新功能發(fā)布時,可以發(fā)布新版本的服務。新版本服務發(fā)布后,用戶可以按需將低版本服務創(chuàng)建的服務實例進行升級,升級后的服務實例可以使用新版本服務的功能。
服務升級原理
服務升級目前支持兩種升級方式資源棧升級和應用升級,下面分別介紹具體的實現(xiàn)原理。
資源棧升級
計算巢創(chuàng)建服務實例時,主要依賴服務模板(Ros模板)進行資源棧創(chuàng)建,進行服務升級時,資源棧升級會按要升級服務版本的Ros模板進行對應資源棧的更新,可以同時實現(xiàn)云資源和軟件應用的升級。這種升級方式只需定義好不同版本的服務,升級時會對比兩個服務版本對應的Ros模板差異,進行對應的更新操作。
下面以一個例子來說明資源棧的升級過程,假設一個服務有兩個版本,版本1服務模板定義包括資源A、B、C,版本2服務模板定義包括資源A、B、D, 其中資源A的定義完全不變,資源B屬性發(fā)生變化,升級過程如下圖所示。
結(jié)合上圖,對資源棧升級規(guī)則進行總結(jié)如下:
新老模板中完全一致的資源,保持不變,例如資源A
新老模板資源名稱相同,但屬性發(fā)生變化的資源,進行更新操作,例如資源B
老模板存在,新模板不存在的資源,進行刪除操作,例如資源C
新模板中存在,老模板中不存在的資源,進行新建操作,例如資源D
應用升級
應用升級通過OOS來進行,是通過在服務實例ECS資源上執(zhí)行腳本命令,更換ECS鏡像、更換軟件包等方式進行升級,這種方式不是直接在資源棧上進行修改,而是以運維操作的方式,對服務實例中的軟件應用進行升級。該方式只適用于軟件應用的升級,且只適用于ECS部署場景,不適用ACK部署場景。
應用升級需要用戶對新老服務版本進行diff,配置要做的升級動作,通過在原有服務實例上執(zhí)行配置好的OOS升級動作,達到升級的目的,這樣整體配置會復雜一些。
由于應用升級不是在資源棧上進行升級操作,資源棧對此并無感知,這時候在資源棧上執(zhí)行其它更新操作,這個升級動作可能會被覆蓋。因此,應用升級目前不推薦使用,建議使用資源棧升級。
服務升級規(guī)則
升級時,要升級的版本要支持當前服務實例的服務版本進行升級才可以
低版本只能往高版本進行升級
服務商自己同賬號(發(fā)布服務賬號和創(chuàng)建服務實例賬號相同)測試時可以將其它版本升級到draft版本、beta版本
draft版本認為是最新版本,不能再向上升級
beta版本從邏輯上應該認為第二新的版本,可以升級到draft,已發(fā)布版本也可以升級到beta版本
服務升級操作
服務實例升級支持單個升級和批量升級,具體操作參見 升級服務實例:
單個升級:在服務實例頁面進行升級操作
批量升級:在服務詳情頁面運維管理頁面進行升級
服務回滾
服務回滾可以認為是服務升級的反向操作,將服務實例從高版本回滾到低版本,回滾只支持回滾到上一個版本,可以通過服務升級歷史查看可以回滾到的版本。