基於 Zadig 的 GitOps 實踐

語言: CN / TW / HK

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: