SREWorks v1.3 版本發布 | 插件機制發布

在v1.2版本發布之後,SREWorks團隊著手開始了v1.3版本的迭代。此次v1.3版本融合了較多用戶需求,以及對底座機制進行了較大調整和優化,故發版時間長了很多。下面讓我們切入正題,來看看這些大變化究竟是哪些?

1. 插件機制

插件包

在OAM應用體系中,組件(Component)和運維特徵(Trait)本身即屬於可插拔的部分。在v1.3版本中,SREWorks團隊優化了appmanager的載入機制,將這些插拔模組從appmanager的源碼中剝離出來,成為了獨立插件包。插件管理以及包結構如下圖:

image.png

├── definition.yaml                           /* 組件定義,描述了組件的元資訊 */
├── frontends
│   ├── deploy.json                           /* 組件部署時前端訂製交互 */
│   ├── build.json                            /* 組件構建方案的前端訂製交互 */
│   └── source.json                           /* 組件構建源的前端訂製交互 */
└── dynamicscripts
    ├── ComponentDeployHandler.groovy         /* 組件的部署腳本 */
    ├── ComponentBuildHandler.groovy          /* 組件的構建腳本 */
    ├── ComponentDestroyHandler.groovy        /* 組件運行時實例銷毀腳本 */
    └── ComponentHandler.groovy               /* 組件定義 */

在後續的小版本中,SREWorks團隊以及生態開發者們,會持續地將內置組件及運維特徵轉換成標準插件,預計遷移過程會持續1-2個版本。

鑒於當前插件的開發存在一定的學習門檻,v1.3版本還暫未對外公開插件的開發體系。待相應的開發者工具配套完善後,我們會將其與開發者手冊一起提供給社區。

插件可視化

通常一個插件會包含前端頁面,參照上圖插件的目錄結構,frontends目錄下即為插件獨有的前端訂製頁面。

以Helm組件為例,在選擇添加該組件後,用戶可以選擇兩種源,一種為該組件的訂製源:社區倉庫(Artifact Hub),另外一種為通用源:程式碼倉庫。組件在進行構建的時候,appmanager會執行ComponentDeployHandler.groovy腳本,該腳本會自動從用戶選擇的源中拉取Helm包打包進應用包中。該組件添加可視化過程如下圖所示:

image.png

image.png
在完成組件添加之後,可以為該組件配置部署的參數基準線。這個參數基準線前端是由插件中的deploy.json控制:Helm的參數均被放置在values這個大變數中。同時,這些變數也可以利用OAM中的dataInputs機制由應用層的全局變數來傳入。

image.png

上述的一系列的配置完成後,OAM部署YAML(ApplicationConfiguration)會被自動生成,在應用構建頁面可以預覽到這份YAML文件。

image.png

PS: 這套插件的可視化機制也全部是利用前端低程式碼能力實現,有興趣的同學可以把企業應用管理(APP_ID: app)這個應用在【運維開發】中導入開發查看其前端低程式碼編排明細。

組件定義流程標準化

從插件可視化那裡,細心的同學可能會發現,我們的組件定義流程從單步變成了四步。是的,隨著組件的開發體系進一步完善,SREWorks團隊對組件的定義過程也進行了明確細化:

原本單步的組件定義拆了4+1步,4步如下圖所示

yuque_diagram.jpg

另外的+1步即組件部署基準線。SREWorks遵循OAM規範,將運維特徵(Trait)這種運行時(Runtime)的能力,嚴格地剝離到組件定義周期之外,作為部署基準線依附在組件上。比如一個組件需要使用Ingress或網關,這些與組件本身定義無關,只是運行時的運維特徵附加,而如果真的讓使用者到部署時候再去附加,又會增加部署的複雜度:於是以這種部署基準線的方式進行維護,使用者只需要在部署基準線之上,針對性地少量配置即可。

image.png

2. 應用機制優化

應用體系升級

SREWorks上線以來,由於【運維開發】中的應用和【應用開發】中的應用存在一些相似,會給使用者帶去一定的困擾,尤其是一些運維團隊。於是SREWorks團隊針對內部使用場景以及外部意見回饋,重新明確了一下這兩種應用,如下圖所示:

yuque_diagram.jpg

企業應用 -> 企業應用市場:

  • 承載企業核心業務的雲原生應用
  • 能夠被加持數智運維能力,展開進一步的數智化運維治理
  • 市面上各類開源應用或大數據解決方案,會被以企業應用形式上架企業應用市場

運維應用 -> 運維應用市場:

  • 使用SREWorks前端低程式碼模式構建的雲原生運維應用
  • 能夠被快速嵌入集成運維中台能力
  • 所有運維應用均經過開發及模型抽象,不會直接上架開源應用至運維應用市場。

企業應用市場

企業應用市場中的雲端倉庫在v1.3正式上線,依據上文的應用邊界定義,在企業應用市場上會上架各類開源應用的雲原生部署方案,讓使用者可以一鍵部署複雜應用支撐業務。

企業應用市場與運維應用市場使用同一套應用機制,應用包結構相同,但使用不同的連接串(endpoint)。同時在這套機制之上,也歡迎用戶構建自己的公司的雲原生應用市場。

image.png

運維應用市場

隨著應用體系的升級,原本內置運維應用也都被上架到了雲端運維應用市場。每個內置運維應用功能更新後,會被優先發布至雲端市場,用戶可以保持更快的更新頻率(運維應用的小版本迭代頻率會快於SREWorks大版本)。

同時後續版本中會進一步對SREWorks底座和運維應用進行解耦(底座不升級也可以通過雲端市場升級到最新),整體採取這樣的更新策略:底座更新頻率下降,運維應用更新頻率上升。

image.png

針對用戶回饋的孤島環境部署難的問題,我們在這個版本開放了離線運維應用包便捷導入導出的能力,進一步降低使用者應用交付門檻。如下圖為SREWorks 雲端/離線 兩個應用分發渠道。

image.png

下圖為離線應用包的前端交互操作鏈路:

image.png

image.png

3. 前端組件自定義集成

很多用戶深度使用了運維應用的前端組件編排之後,覺得當前的通用前端組件還無法滿足需求,提出希望開發自己的前端組件。但進行嘗試的用戶需要將自行編寫的組件源碼合併到frontend的源碼目錄中重新編譯出包,這大大增加了用戶的開發成本。於是我們在底層結構上做了適配優化,支援組件可以用UMD包形態遠程載入

這也就意味著,用戶可以直接將自己寫的組件打成UMD包,整個打包構建過程與frontend編譯無關,可以獨立完成。前端組件在構建完成後,支援在運維物料中一鍵快速導入,導入後使用體驗完全等同內置組件

image.png

image.png

提供@sreworks/widget-cli 遠程組件開發腳手架,內置vue 和 react 工程初始化配置模板,用戶可根據自身技術棧自由選擇,將已有業務組件發布到npm或自定義私有倉庫,快捷集成使用,且方便版本管理,支援組件runtime在線升級更新。

image.png

4. 數據運維平台的流計算作業監控大盤

數據運維平台中的流計算部分基於開源VVP平台實現,由於其缺失有效的作業監控大盤,v1.3版本基於Grafana,以全託管方式新增VVP作業的監控大盤。

image.png

5. 其他

  1. 支援helm install SREWorks之後的進度跟蹤查詢
  2. 增加表格組件行高亮動態配置功能,支援5種顏色
  3. 增加前端組件: wordcloud 詞雲圖 / heatmap熱力圖, 優化前端組件: Tab豎向過濾器支援
  4. 增加操作提交提示資訊自定義能力 //github.com/alibaba/SREWorks/issues/86
  5. 優化kankio容器構建機制
  6. 增加應用管理默認納管自身k8s集群
  7. 桌面背景伸縮適配優化

如何從當前版本升級到v1.3

  • 升級包含底座,頁面可能會有5-10分鐘的不可訪問,請注意。
  • 用戶自行開發的雲原生應用不會受影響(不重啟),SREWorks網關到應用的流量會有中斷。
git clone //github.com/alibaba/sreworks.git -b v1.3 sreworks

cd sreworks
./sbin/upgrade-cluster.sh --kubeconfig="****"

如在使用過程中遇到問題,歡迎各位在GitHub中提出Issues或Pull requests。

SREWorks開源地址://github.com/alibaba/sreworks