一文帶你瞭解什麼是GitOps
摘要:說起GitOps,可能很多朋友馬上會聯想到DevOps,那麼GitOps和DevOps之間有什麼關係、又有什麼區別呢?
本文分享自華為雲社群《淺談GitOps》,作者: 敏捷的小智。
GitOps與DevOps
說起GitOps,可能很多朋友馬上會聯想到DevOps,那麼GitOps和DevOps之間有什麼關係、又有什麼區別呢?
DevOps是一種文化
DevOps包含了Development和Operations兩個部分,是一種重視“軟體開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟體交付”和“架構變更”的流程,來使得構建、測試、釋出軟體能夠更加地快捷、頻繁和可靠。
如今很多團隊當中都在踐行著DevOps文化,其中核心的一條理念就是“自動化一切可自動化的”。而GitOps,也正是基於這種理念下而誕生的一種持續交付方式。
GitOps是一種持續交付方式
GitOps核心思想是將應用系統的宣告性基礎架構和應用程式存放在Git版本庫中。
將Git作為交付流水線的核心,每個開發人員都可以提交拉取請求(Pull Request)並使用Git來加速和簡化應用程式部署和運維任務。通過使用Git,開發人員可以更高效地將注意力集中在建立新功能而不是運維相關任務上(例如,應用系統安裝、配置、遷移等)。
同時,GitOps還是一整套CI/CD流水線方案。
在GitOps中可以自由地為流水線的不同部分選擇最佳工具。可以從開源生態系統中選擇一組工具,也可以從封閉源中選擇一組工具,或者根據使用情況,甚至可以將它們組合在一起。
不過目前業界已經有了不少端到端的DevOps平臺,華為雲DevCloud就可以一站式端到端地覆蓋CI/CD全流程。讓開發者不必再糾結於如何選擇流水線中的不同部分。從專案管理、程式碼開發,到編譯構建、部署釋出、測試運維,軟體開發的全生命週期都可以在華為雲DevCloud上完成。
當然,也可以只使用華為雲DevCloud中的個別服務與已有流水線進行拼接,搭建成新的CI/CD流水線。例如,在DevCloud中可以由程式碼託管服務CodeHub來作為本期主題GitOps中的Git倉庫。
GitOps 流水線
GitOps 基於拉模式構建交付流水線。在DevCloud中以GitOps的方式搭建的交付流水線,流程如下:
1、 原始碼儲存於CodeHub,開發人員推送提交包含新功能的程式碼到程式碼倉庫的對應分支中;程式碼稽核通過後將被合併至對應分支。
2、 合併請求通過後會觸發構建(CloudBuild)並進行測試,構建好的映象將被推送至映象倉庫SWR中。
3、 GitOps檢測到有新的映象,會提取最新的映象標記,然後同步到 Git 配置倉庫(Config)的清單中。
4、 GitOps檢測到叢集狀態過期,會從配置倉庫(Config)中拉取更新後的清單,並將包含新功能的映象通過CloudDeploy部署到叢集(CCE)裡。
對於不同環境而言,可以在Config倉中建立多個子目錄或者子分支管理不同環境對應的多個叢集,從而實現多環境的GitOps。