基於 Zadig 的 GitOps 實踐
GitOps 是 WeaveWorks 於 2017 年提出的概念,其核心思想是將應用程式的服務配置、資料庫、編排配置等以程式碼的形式組織在 Git 倉庫中,來組織整個部署過程,實現應用程式的版本化、自動化和標準化。
GitOps 的兩種模式
GitOps 的部署策略有兩種實現方式:基於 Push 的方式和基於 Pull 的方式。兩者的主要區別如下:
基於 Push 的方式 基於 Pull 的方式
- Push 方式是作為上帝視角來做環境的更新,而 Pull 方式則可以利用許可權鑑權等資訊做安全性及合規性保障。
- Push 方式是在程式碼變更後觸發更新,如果有人手動修改了叢集中的配置,叢集中的配置就會和程式碼庫中的配置有差異;而 Pull 方式實現方式,則是檢測叢集和程式碼庫中的配置,當發現不一致時,自動/手動觸發更新,讓環境中使用的配置始終和程式碼庫中的保持一致。
Zadig 關於 GitOps 的思考
Zadig 作為一款開源持續交付產品,致力於幫助工程師成為企業創新的核心引擎。Zadig 充分融合 GitOps 的思想,結合 Pull 和 Push 兩種方式進行實踐,幫助工程師高效輸出:
- 讓工程師專注在業務價值創造上,減少其對繁瑣部署流程的參與:Webhook 及全自動軟體交付流水線能力,讓業務程式碼“所見即所得”的在環境中生效。
- 降低工程師對服務配置、環境管理的心智負擔:服務配置 AsCode,Git 倉庫中環境配置變更後自動同步到 Zadig 中,服務配置變更後自動更新環境。 下面具體闡述 Zadig 中是如何實踐 GitOps 來助力高效交付的。
Zadig 中的 GitOps 實踐
程式碼變更、環境配置變更、服務配置變更後,均可自動部署環境。
程式碼變更
在 Zadig 中配置工作流,增加觸發器配置後,系統會自動在對應的 Git 倉庫中建立 Webhook。當滿足條件的事件發生時會自動觸發工作流執行,將最新程式碼變更部署到環境中。
對於不同的環境,在工作流中配置多個 Webhook 觸發器,實現多環境的 GitOps。
環境配置變更
支援從 Git 倉庫中匯入環境配置(Ingress/ConfigMap/Secret/PVC),匯入時開啟自動同步開關。 當 Git 倉庫中配置內容變更後,會自動更新 Zadig 中的環境配置。
服務配置變更
支援從 Git 倉庫匯入服務配置建立服務。 在服務策略中開啟服務自動更新開關,當代碼庫中的服務配置內容有變更時,會自動同步更新 Zadig 中的服務配置,並自動基於新的配置更新環境中的對應服務。
小結
基於 Webhook 的自動化可持續部署可簡化中間流程提高部署效率;服務配置及時自動同步能力可使服務規模化的過程更加有序可控,為團隊帶來一致性;環境自動更新能力,增強開發人員的使用體驗。
一言以概之,Zadig 中關於 GitOps 的實踐,支援團隊以小步快跑的方式迭代產品,縮短從程式碼到交付的過程,更快驗證價值。
Zadig,讓工程師更專注創造!歡迎加入開源吐槽群:fire:
- 爆肝整理5000字!HTAP的關鍵技術有哪些?| StoneDB學術分享會#3
- Java併發程式設計解析 | 基於JDK原始碼解析Java領域中ReentrantLock鎖的設計思想與實現原理 (一)
- 【程式碼級】全鏈路壓測的整體架構設計,以及5種實現方案(流量染色、資料隔離、介面隔離、零侵入、服務監...
- 電商行業:全鏈路監測廣告投放效果,用資料驅動業務增長
- 如何給玩偶建模並讓它跳個舞?
- 原來 Rust 當然 Lint 是這樣工作的
- 基於 Zadig 的 GitOps 實踐
- What's new in dubbo-go-pixiu 0.5.1
- 負載均衡原理分析與原始碼解讀
- 利用 SonarScanner 靜態掃描 Rainbond 上的 Maven 專案
- 分散式鏈路追蹤Jaeger 微服務Pig在Rainbond上的實踐分享
- 收藏!0基礎開源資料視覺化平臺FlyFish大屏開發指南
- 從開源的視角,解析SAP經典ERP “三十年不用變”的架構設計 薦 轉
- 從碼農轉型大音樂家,你需要這些音樂製作處理工具
- 五分鐘給你的 gRPC 服務加上 HTTP 介面
- 【詳細教程】一文參透MongoDB聚合查詢 原 薦
- 【超詳細】手把手教你搭建MongoDB叢集 原 薦
- 從伺服器到雲託管,到底經歷了什麼?
- 敏捷需求管理篇|如何從0-1寫好一個使用者故事
- go-zero微服務實戰系列(四、CRUD熱熱身)