我們爲什麼選擇使用分佈式持續交付新星 Zadig

本文原創作者 Alan Wang - 閃電出行工程師,已授權本站轉發

持續交付作爲運維工作裏極其重要的一個環節,本身就存在一些歷史悠久的工具,拿 Jenkins 來說,可以通過插件實現各種各樣複雜的功能;隨着雲原生、devops、gitops 等理念的不斷普及,也湧現出不少新生力量,比如說 Gitlab CI、KubeVela、ArgoCD、雲效等,在 CI 或者 CD 環節中大展身手,合理使用的情況下都能顯著的提升效率;但是今天我們的主角不是上面的這些選手,而是另一個極具潛力的黑馬:Zadig。

簡介

Zadig 是一款分佈式持續交付產品,由 KodeRover 公司基於 Kubernetes 自主設計研發,具有產品持續交付、持續測試、持續追蹤的全流程能力,業務架構圖:

爲什麼選擇 Zadig?

原來是使用 Jenkins 做的交付,結合 kustomize 也能實現基於 k8s 編排應用的絲滑交付。我們考慮其他工具的出發點一方面是:新增一個環境的話配置對應的交付任務也比較複雜;另一方面是:爲了方便測試和開發同學,作爲一個交付系統來說,Jenkins 是足夠勝任的,但是並不能很好的展示被交付應用的運行狀態、日誌等,還需要其他工具或者系統去看應用運行是不是正常、查看日誌等,所以考慮是否有開源的產品可以滿足需求,經過一頓找找找,Zadig 憑藉着出色的能力,在一衆選手中殺出重圍,另一個有力的競爭者是雲效,雲效是阿里雲的 PaaS 應用,基於阿里雲能力棧可完整覆蓋整個應用的生命週期,簡單說明如下:

結合需求和當前運維現狀,權衡後選擇了 Zadig,可用的核心功能:

落地過程

安裝

使用

官方提供了很多案例幫助用戶熟悉 Zadig 能力棧和具體配置,這裏就不展開細說,只說明一下我們在落地過程中做了哪些關鍵的事情

價值

不足

Zadig 目前還處於快速迭代的階段,難免存在一些功能和易用性問題,但每次更新都能顯著看到改善,分享下我們落地過程中的遇到的部分心得。

  1. zadig 暫不兼容 kustomize,提供了模板庫功能實現公共配置抽離和複用,缺點是隻適合服務初始化使用,更新模板後需要逐個手動應用到服務(批量更新功能預計 v1.12.0 上線);

  2. 構建配置目前不支持複用(服務和代碼倉庫強關聯),每個服務就需要單獨創建一個構建,同類服務的構建過程其實就一個代碼倉庫不同其他完全一致,也就是說 90% 的配置工作都是多餘的;相關優化功能 zadig 開發團隊已經在計劃中,後續版本會解決這個問題;

  3. 服務編排裏任何改動都會重建 deployment 的 rs、重建 pod,一些資源對象比如 pdb、hpa 這種仍傾向於手動維護。

展望

我們目前已經接入了多個環境的數百個前後端微服務的交付,順利進行了數千次部署交付,Zadig 漂亮的界面(可強 Jenkins 太多了~)和易用性也得到了測試和研發同學的肯定。作爲一個懶人,希望 Zadig 在配置複用上再改善一些,雖然可以自己開發腳本通過 API 實現很多重複配置的自動化,我們落地過程中就開發了腳本實現:服務、構建、用戶權限分配等功能的批量管理,極大降低了配置成本;但還是希望 Zadig 能提供原生功能實現,降低大家的使用成本。服務編排裏面的改動會造成不必要的 pod 重啓的問題,也希望 Zadig 後面能有解決方案。

Zadig 已經很出色了,未來可期,共勉。

Git 倉庫:https://github.com/koderover/zadig

參考資料

[1]

Zadig 雲上測試環境: https://os.koderover.com/

[2]

安裝文檔: https://docs.koderover.com/zadig/v1.11.0/install/overview/

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/9eAfG-huYK-sFfDQZCnLQw