GITOPS 有助於重新定義在需要精確性、自動化和透明度的環境中管理基礎架構和應用程式部署的方式。
翻譯自 Achieve Gitops on Day One with IAC Automation,作者是 Team Nitric 的工程副總裁 Rak Siva,致力於改善軟體開發人員的體驗。 在他豐富的 15 年軟體行業任期內,他開始深入參與具有挑戰性的工程之旅。 在金融科技和數字入職領域任職期間,我經歷了三個不容小覷的挑戰,這些挑戰不斷考驗著團隊的韌性:
錯誤配置和不一致:不同環境中配置漂移或不一致的後果可能是災難性的。 面對監管審查和運營風險,滿懷信心地回滾到經過驗證的狀態成為當務之急。 手動且容易出錯的過程:人為疏忽導致的錯誤,例如錯誤配置、安全漏洞和代價高昂的停機威脅,即使在精心策劃的專案中也會蒙上陰影。 缺乏可見性和可審計性:比如“誰做了這個改變?什麼時候?為什麼?“諸如此類的問題可能成為不可避免的挑戰,阻礙我們滿足合規性要求和解決安全問題。
像Spotify這樣的行業領導者已經利用Gitops的力量來應對這些行業特定的挑戰,正如Tim Hansen在上個月的Kubecon北美會議上所描述的那樣,“一切都在Spotify擁抱Gitops。 Gitops 不僅提供解決方案,還使我們能夠重新定義在精確、自動化和透明不僅是理念,而且是成功的基石的環境中管理基礎設施和應用程式部署的方式。 Gitops 是一種將 Git 版本控制的強大功能與基礎架構 (IAC) 和持續交付 (CD) 實踐相結合的方法。 Gitops 的核心是將您的基礎架構和應用程式配置視為 **,並將它們儲存在 Git 儲存庫中。 這一單一事實來源成為自動部署和同步環境的基礎。
有很多文章深入研究了 gitops,我總結了以下關鍵原則。 您可以在此處了解有關 Gitops 和這些原則的更多資訊。 宣告式配置:Gitops 依賴於宣告式配置,您可以在其中定義基礎架構和應用程式的所需狀態。 這意味著您描述所需的內容,而不是如何實現它,這有助於保持一致性並減少配置漂移。
版本控制:Git 是 Gitops 的支柱。 它提供版本控制、協作和審核功能。 對基礎架構或應用程式的每一次更改都會被跟蹤,這樣就可以在需要時輕鬆回滾到以前的狀態。
持續交付:Gitops 採用持續交付的原則來自動化部署過程。 每當您對 Git 儲存庫進行更改時,都會啟動乙個自動化管道,將這些更改應用於您的環境。 這降低了人為錯誤的風險,並確保了快速可靠的部署。
自動化:制定工具和流程以自動將基礎結構的實際狀態與 Git 儲存庫中的所需狀態同步。 日常操作無需人工干預。
實施 Gitops 流程簡化了開發人員和運營團隊的職責。 開發人員主要專注於編寫和提交,而運營團隊則承擔著維護和確保解決方案和部署對開發人員和操作員始終安全可靠的關鍵作用。
開發人員可以從這種方法中受益,因為他們可以專注於編寫和改進應用程式的核心任務。 他們不需要關注基礎設施**或部署過程的複雜性。 它們的更改、配置和應用程式更新在 Git 儲存庫中進行版本控制,從而使協作和跟蹤更改變得簡單明瞭。
運營團隊在 Gitops 中發揮著至關重要的作用,確保 Git 儲存庫中指定的基礎架構和部署配置是一致的,並符合最佳實踐。 他們管理這些配置的自動化和編排,確保在開發、測試和生產等各種環境中安全可靠地應用更新。 這種方法增強了安全性,減少了人為錯誤,並為合規性和故障排除提供了清晰的審計路徑。
採用GITOPS通常需要改變傳統基礎設施管理的思維方式。 團隊需要採用宣告性的、版本控制的方法來定義和管理基礎結構,這可能與他們現有的做法不同。
*: VMware 根據上圖,Gitops 工作流中與軟體開發和部署過程相關的幾乎所有內容都儲存在您的儲存庫中:
基礎結構作為 ** (IAC):這涉及通過流程而不是手動流程來管理和配置基礎架構。 它使團隊能夠將版本控制、協作、合規性和 CI CD 實踐應用於基礎架構管理。
配置:這些是控制應用程式和基礎結構行為的設定和引數。 在 Gitops 工作流程中,配置與 ** 一起進行版本控制和管理,以確保一致性和可追溯性。
應用**:這是正在開發的應用程式的實際**。 在 Gitops 中,應用程式儲存在版本控制系統中,通常與 IAC 和配置一起維護,以確保版本和更改的統一方法。
CI CD 管道:CI CD 管道定義了從開發到生產所經歷的更改的自動化步驟。 在 Gitops 中,這些管道也被視為 ** 並進行版本控制,從而實現自動化、可重複且可靠的流程。
乍一看,這似乎很簡單,然而,在這些資產中,存在著構建成功的 Gitops 工作流程的真正挑戰。 例如,宣告基礎架構會帶來許多好處,包括版本控制和可重複性,但它也帶來了一系列挑戰。
複雜性:基礎結構可能很複雜,涉及各種資源,例如虛擬機器、網路、儲存和安全策略。 編寫來定義和管理這種複雜性可能具有挑戰性,尤其是對於更大、更複雜的環境。
學習曲線:採用 IAC 通常需要團隊成員學習新語言(Terraform、AWS CloudFormation、Ansible)、工具和最佳實踐。 這種學習曲線會減慢初始實現速度並導致錯誤。
測試與驗證:可能很難確保 IAC 模板按預期工作。 在部署之前,需要進行全面的測試和驗證過程,以發現潛在問題。 這包括針對目標環境的單元測試、整合測試和驗證。
基礎設施漂移:在將 IAC 引入 CI CD 管道時,團隊還必須處理漂移問題。 當應用程式要求開始偏離 IAC 中定義的狀態時,就會發生偏移。
因此,對於正在與 IAC 作鬥爭或尚未完全接受 IAC 的團隊來說,GITOPS 可能特別具有挑戰性。 這可能是乙個令人不安的過渡,但幸運的是,有一些方法可以幫助實施 Gitops,而無需接受 IAC。
要滿懷信心地開始您的 Gitops 之旅,關鍵是要使過程盡可能簡單。 這可以通過使用解決 IAC 相關問題的自動化和抽象框架來實現。
將下面的圖表與上面顯示的圖表進行比較。 該過程消除了一些最初通過使用自動化框架手工製作的資產,以解決以前提出的一些問題。 在本例中,我們使用的是開源 nitric 框架其他工具也可用於自動化該過程的某些部分。
本地開發和版本控制:開發人員首先在模擬雲基礎架構的本地環境中構建專案和編寫應用程式。 這種方法允許他們離線迭代和測試**。 這些更改將提交到版本控制儲存庫,開發人員決定何時將它們部署到雲中。
CI CD 管道和硝酸框架:當應用程式準備好遷移到更高的環境(例如暫存或生產環境)時,與 Nitric 框架整合的 CI CD 管道會從應用程式推斷出必要的雲基礎結構要求。 它生成乙個資源規範,該規範充當基礎結構的真實來源,並受版本控制以進行審核。
基礎架構同步:Nitric 框架使用資源規範來識別所需的基礎架構元件並將其部署到雲提供商。 此過程可確保基礎結構始終與應用程式同步**,從而消除了每次執行 CI CD 管道時配置偏移的可能性。
運營團隊的角色:雖然對手工製作的基礎設施(即**)的需求已經減少,但運營團隊仍然發揮著關鍵作用。 他們負責實現滿足應用程式需求(如規模和可用性)的基礎結構提供程式。
這種方法簡化了產品開發周期,縮短了上市時間,並促進了開發人員和運營團隊之間的協作環境。 它有效地平衡了自動化和控制,以確保基礎設施變更既高效又管理良好。
構建和部署應用程式**的前景似乎令人望而生畏。 通過利用現代基礎設施(即最好的自動化工具)的力量,並採用 Gitops 方法,公司可以找到從開發到生產的無縫路徑。
像 Nitric 這樣的自動化框架專注於簡化工作流程中耗時的手動步驟,使您能夠從第一天起就使用 Gitops 工作流程構建和發布應用程式。 對於那些有興趣進一步探索這種方法的人,可以考慮深入研究 NITRIC。