每個團隊都在尋找一顆能夠簡化他們流程、加快交付並保持環境穩定的「銀彈」。近年來被廣泛採用的方法之一就是GitOps。這個詞語可能聽起來像是另一個流行的DevOps術語,但它代表了團隊管理基礎設施和部署方面的突破性變革。
在本文中,我們將討論GitOps、它的內容,以及它與傳統的DevOps解決方案有何不同。
GitOps是什麼?
GitOps是一種使用基於Git的工作流進行基礎設施自動化和應用程序部署的框架。它的核心是將開發者用於控制軟件變更的原則和實踐應用於運維。簡單來說,GitOps是一種實踐,在其中Git倉庫是唯一的真實來源,變更或修改通過拉取請求進行,而一個自動化系統則負責將這些變更應用到目標環境。
GitOps的關鍵原則
GitOps的主要特點包括以下幾點:
Git作為真實來源
包括基礎設施、配置和應用程序部署在內的所有內容,都必須存儲在Git倉庫中。這讓您可以將所有內容控制在手。集群從Git倉庫中讀取並應用配置、部署配置和環境管理工具。工具幫助追蹤變更;如果倉庫中檢測到變更,工具將自動應用此變更。
宣言式基礎設施
and you will only return the following translated text without any explanation.
意味著您需要使用YAML或JSON定義系統中的一切聲明狀態。工具將會比較該狀態與實際狀態,並盡一切可能將其與聲明的狀態對齊。
自動化與CI/CD
對Git倉庫所做的更改應該自動運行操作。這可以是例如Jenkins、ArgoCD或Flux,它們將自動部署新的配置或應用程序版本,以確保系統與倉庫的狀態匹配。縮寫中的“CD”部分尤為重要,因為變更應該持續且盡快地出現。
自愈與持續對齊
GitOps工具通常具有監控系統並確定其見到的內容是否與倉庫中存儲的內容一致的方式。如果發現任何偏差,工具將通過將環境更改回倉庫中描述的狀態來解決所謂的“自愈”。
從DevOps轉向GitOps
在深入探討GitOps的具體內容以及它如何與DevOps相矛盾之前,關鍵是要賞識傳統DevOps的貢獻。DevOps指的是以一種增強團隊合作同時優化自動化流程(如測試、部署和基礎設施配置)的方式管理開發和運營團隊。
一般來說,DevOps程序包括採用如Jenkins、Kubernetes、Docker和Ansible等工具,在軟件開發生命週期內開發持續整合持續交付(CI/CD)流程,從而提高軟件交付的速度。
GitOps適合放在哪裡?
GitOps在這些DevOps進化原則的基礎上,以更結構化的方式進行。它將Git方法更先進地整合進第2天運營,而不是作為一個附加的事務。
當使用傳統的DevOps技術時,很可能不同的團隊會同時在基礎設施和應用程序代碼上工作,這可能會導致風險。所有的這些活動都在Git下進行;還有基礎設施,任何變更,無論多小,都同等地進行版本控制。
採用GitOps工作流程的好處
提高安全和合規性
擁有一個版本控制的Git倉庫作為唯一與基礎設施和應用程序交互和進行變更的方式的好處之一是,它產生了一個可驗證的審計軌跡。
提高開發者體驗
開發者可以使用他們已經熟悉的工具,例如Git,來進行基礎設施管理。GitOps讓開發者能夠使用相同的工具來管理基礎設施,從而消除了對額外工具的需求,並使採用GitOps工作流程變得更加容易。
快速回滾和災難恢復
許多傳統的DevOps管道的挑戰之一在於,它們可能會受到變更回滾的影響。GitOps讓您可以通過檢出存庫的早期版本,將整個系統回滾到任何以前的状态。這可以大大減少災難情景下的恢復時間。
跨環境的一致性和統一性
Git是真相的來源,這確保了Git中的任何內容——從開發分支到生產分支——應該與系統的狀態相似。再也沒有了這樣的說法:“它在我的機器上能运行。”不同環境中的不同配置是當手動進行更改時典型的部署問題。
可擴展性
GitOps比傳統的配置管理解決方案更具擴展性。它引入了描述性而非命令性的概念。使用GitOps,您只需描述一次環境,而不是在一個地方更改環境。然後工具會不斷確保環境是正確的,並在所有系統中建立機器以滿足這種描述。
GitOps如何轉變DevOps實踐
GitOps 是 DevOps CI/CD 工具和流程向左完全轉變的一種新方式。以下是一些領先的傳統 DevOps 解決方案現在如何採用 GitOps,或計劃在未來整合 GitOps 的實踐:
1. 基礎設施即代碼
對於 DevOps 來說,能夠創建和管理基礎設施,並可能自動化這些程序是至关重要的。一位 DevOps 大師可能會使用 Terraform 或 CloudFormation 這類工具,但另一位專家可能執行同樣的腚本以創建一個完全不同的環境。這就是基礎設施即代碼發揮作用的地方。這主要意味著將所有 IaC 配置存儲在 Git 中。在這個系統中,一切都是自動化的,更重要的是,持續受到檢查。
2. CI/CD 管道
在傳統的 DevOps 工作負荷中,CI/CD 管道自動化測試、構建和部署代碼。然而,在 GitOps 中,CI/CD 管道也用於部署基礎設施更改。像 ArgoCD 和 Flux 這樣的工具通過監控 Git倉庫並在推送到它的任何更改時自動更新環境,從而增強了傳統的 CI/CD 管道。因此,管道為開發者做得更多,並加快了週期。
3. 監控和可觀察性
GitOps 重點關注監控與可觀察性,這讓它更加可靠。GitOps 所使用的工具持續監控實時環境,並將其與 Git 中定義的狀態進行比較。因此,如果系統偏離了定義的狀態,它會自動回滾。自動回滾能夠快速恢復有問題的環境,最小化停機時間,並提升系統的可靠性。
結論
總的來說,GitOps 不僅僅是一個熱門詞語,而且是一種強大的方法,能夠轉變傳統的 DevOps 實踐。通過將基礎設施和部署當作代碼對待,GitOps 消除了對手動操作的需求,並確保在所有環境中都達到期望的狀態。
對於那些考慮現代化 DevOps CI/CD 服務的團隊來說,採用 GitOps 工作流是一種更高效、更可靠地達成期望結果的方法。有了像 ArgoCD 和 Flux 這樣的工具,GitOps 擁有光明的未來,並可能成為未來 DevOps 景觀中的主導部分。
Source:
https://dzone.com/articles/an-introduction-to-gitops