基於 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,讓工程師更專注創造!歡迎加入 開源吐槽群🔥
- 神奇的 Zadig 工作流:以連結廣大開發者為使命
- 資料庫/SQL 版本管理工具選型指北
- 如何實現 MySQL 程式碼和資料的一站式變更
- Zadig 跨團隊之最佳使用姿勢:搞定開發、測試、運維協作自動化
- 基於 Zadig 的 GitOps 實踐
- 極速 Zadig 構建效率是這樣煉成的
- 主機基礎設施如何使用 Zadig 做持續交付
- Zadig 環境負載均衡:0 人工干預,極速部署
- 打通了!Jira Zadig 實現需求與研發過程追蹤
- 雲原生 DevOps 現狀調研問卷徵集:KodeRover 聯合 OSCHINA 推出
- Zadig v1.13.0 相信開放的力量,工作流連通一切價值
- 飛書影片會議端到端整合測試工程實踐經驗總結 - Zadig 應用案例
- 在解決了 2961 個使用者反饋後,我做出了這樣的改變...
- 基於 Ingress Controller 在叢集外訪問 Zadig 自測環境(最佳實踐)
- iMile 利用 Zadig 多雲環境周部署千次,跨雲跨地域持續交付全球業務
- 穩!上千微服務接入 Zadig 的最佳姿勢(Helm Chart 篇)
- 穩!上千微服務接入 Zadig 的最佳姿勢(K8s YAML 篇)
- Zadig 洞態 IAST:讓安全溶於持續交付
- TT 語音落地 Zadig:開源共創 Helm 接入場景,環境治理搞得定!
- 00後雲工程師用 Zadig 為企業研發開源節流