
在 v1.3 版本之后,SREWorks 團隊收集了較多的用戶反饋,大家普遍對于 SREWorks 的內網離線安裝有較大的訴求。于是團隊決定進一步增強這部分的安裝能力。
前端工程部分 (frontend),為了開發者更加敏捷高效的協作開發,以及便于社區開發者參與共建前端組件生態。我們對前端工程架構進行了重新梳理拆分,按照 Monorepo 模式架構演進;同時也對工程構建相關工具進行了優化升級。
下面為 v1.4 的版本功能版本介紹:
(資料圖)
Monorepo 即單倉 (repository) 多包 (package),大型前端工程項目采用這種模式進行開發管理,能帶來諸多的開發和管理便利:
更加清晰的模塊結構和依賴關系;更細粒度的獨立構建單元便于協作開發和不同更新頻率的子包單獨發版;更加高效的代碼復用等。我們在 v1.4 版本中采用 lerna + yarn workspace 的技術方案進行了 Monorepo 的架構實踐:將原工程拆分為 @sreworks/app 主包應用,和 @sreworks/components、@sreworks/widgets、@sreworks/framework、@sreworks/shared-utils 四個 npm 子依賴包。目錄結構變動如下圖所示:
工程重構過程中,我們對原有構建工具也進行了優化升級:
主包應用采用 webpack5 作為構建工具,子依賴包采用 Rollup 作為構建工具;通過調優構建配置,將構建時間由 v1.3 版本的 74 秒降低到 23 秒,提升 68%;通過統一各子包依賴版本、合并重復依賴、以及部分 npm 依賴 cdn 引用本地化處理等方式進行了構建體積調優,調優至 1.6M,較 Monorepo 初版本的 5.4M,降低 70%;@sreworks/widget-cli 遠程組件腳手架進行了同步的構建升級。早期版本的離線安裝,依賴用戶的 Maven 源、PIP 源在用戶內網做應用的二次構建,用戶普遍反饋內網場景對于這些源的支持也不齊全,更希望無構建直接拉起。
于是在 v1.4 版本中,我們將整個底座 (appId: flycore) 也都上架到了運維市場,使得其相關鏡像及元信息,能夠作為部署基線固化至開源代碼中。
經過收斂之后的鏡像清單如下鏈接,后續每次發版有應用版本更新,都會自動更新該鏡像清單。
??https://github.com/alibaba/SREWorks/blob/master/images.txt??
清單中總共 59 個鏡像,共計存儲空間約為 5.9G。
下圖為通過 SREWorks 前端組件繪制的按照鏡像大小排列的清單矩形樹圖:
離線部署的命令示例如下,底層依賴軟件和運維應用的鏡像倉庫需要分開設置:
鏡像倉庫以sreworks.io/hub-test為例:
# 下載sreworks到本地git clone http://github.com/alibaba/sreworks.git -b v1.4 sreworkscd sreworks/chart/sreworks-chart# 安裝SREWorkshelm install sreworks ./ \--create-namespace --namespace sreworks \--set global.accessMode="nodePort" \--set global.images.tag="v1.4" \--set appmanager.home.url="http://localhost:30767" \--set saas.onlyBase=true \--set global.images.registry="sreworks.io/hub-test" \--set global.images.imagePullPolicy="IfNotPresent" \--set appmanagerbase.kruise.manager.image.repository="sreworks.io/hub-test/kruise-manager" \--set appmanagerbase.mysql.image.registry="sreworks.io" \--set appmanagerbase.mysql.image.repository="hub-test/mysql" \--set appmanagerbase.zookeeper.image.registry="sreworks.io" \--set appmanagerbase.zookeeper.image.repository="hub-test/zookeeper" \--set appmanagerbase.redis.image.registry="sreworks.io" \--set appmanagerbase.redis.image.repository="hub-test/redis" \--set appmanagerbase.minio.image.registry="sreworks.io" \--set appmanagerbase.minio.image.repository="hub-test/minio"
git clone http://github.com/alibaba/sreworks.git -b v1.4 sreworkscd sreworks./sbin/upgrade-cluster.sh --kubeconfig="****"
如在使用過程中遇到問題,歡迎各位在 GitHub 中提出 Issues 或 Pull requests。
SREWorks 開源地址:??https://github.com/alibaba/sreworks??
在此感謝來自開源社區的 @kw214 (Kimmy Wang) 同學在 Monorepo 演進方案中積極的討論參與以及代碼貢獻,也歡迎更多的伙伴能夠參與到我們的開源工作組中來,一起將項目做的更好(有意向的同學可以聯系群中小助手或群管理員進組)