GitOps 工具選型,33 款工具任你挑!

爲了幫助大家開啓 GitOps 之旅,本文介紹了 30 多種工具,如果你要想應用 GitOps,建議你使用這些工具。

GitOps 借鑑了 DevOps 方法論的自動化方面,是一種旨在通過軟件開發和部署來簡化基礎設施管理和雲操作的方法。雖然許多人認爲 GitOps 可以替代 DevOps,但事實並非如此,該方法僅專注於實現 DevOps 方法論中的自動化這一個方面。

具體來說,GitOps 使用 Git 拉取(pull)請求來自動化基礎設施配置和軟件部署,所有這些都是爲了使 CI/CD 變得更加高效。

GitOps 將 Git 作爲應用程序開發和雲基礎設施的唯一事實源;採用聲明式語句來簡化配置和部署。

GitOps 統一了許多關鍵任務,比如雲集羣(特別是運行在雲中的容器)的部署、管理和監控,並允許開發人員對他們的應用程序部署管道有更多的控制。由於 Git 可用於基礎設施即代碼(IaC)和應用程序開發,因此它是該方法的理想事實存儲庫。

1 GitOps 的好處

對於那些使用該方法的人來說,GitOps 提供了一些關鍵的優勢,首先是更精細的 CI/CD 管道本身。該方法充分利用了雲原生應用程序和可伸縮雲基礎設施的優勢,而沒有引入常見的複雜性。

其他好處還包括:

許多觀點認爲,GitOps 將持續交付與雲原生優勢和 IaC 結合起來,提供了這兩個領域的最佳服務。GitOps 最佳實踐還標準化了端到端的管道,你可以將該方法與任何現有管道進行集成,而無需進行大的更改。只要使用合適的工具即可完成這項工作。

2 GitOps 工具

說到適合這項工作的工具,有無數工具可以幫助你將 GitOps 方法與現有工作流進行集成。一些支持 GitOps 的工具是非常流行的,甚至可以在現有的管道中使用它們。如果你想加入 GitOps,這裏有一些我們推薦的工具可以幫助你進行入門學習。

1、 Kubernetes

當然,Kubernetes 是 GitOps 的核心。畢竟,該方法是基於使用 Kubernetes 來管理容器並構建可靠的基礎設施的。Kubernetes 現在提供了許多自動化工具,可以簡化雲基礎設施的部署和擴展。我們將在本文的後面部分介紹其中的某些工具。

2、Git

作爲一個開源的版本控制平臺,Git 非常強大。在 GitOps 中,Git 存儲庫將成爲唯一的事實源。提交給 Git 的每個代碼都將被處理和部署。你還可以使用 Git 存儲庫來進行開發和部署。

  1. Helm

Helm 是用於配置 Kubernetes 資源的最強大的工具之一。是的,你可以使用 Homebrew 或 Yum,但是 Helm 提供的自動化功能是其他同類工具所不具備的。

  1. Flagger

如果你想進一步管理發佈,來自 Weaveworks 的 Flagger 是必備的工具。它是一個管理漸進式交付的工具,允許有選擇地部署新代碼以識別錯誤。它可以很好地與本列表中的下一個工具配合使用。

5、Prometheus

Prometheus 可以充當 GitOps 的監控工具。如果變更沒有通過 Flagger 設置的測試,它將觸發報警。除此之外,Prometheus 還彌補了 GitOps 與其他自動化工具之間的差距。

6、Flux

Flux 或 FluxCD 只是 Kubernetes 的 GitOps 操作符。它會使用 Git 庫中的配置自動調整 Kubernetes 的集羣配置。Flux 是爲什麼可以輕鬆地恢復對 Kubernetes 集羣所做更改的原因。

7、Quay

對於鏡像管理,可以使用 Quay。可以使用該工具對容器鏡像進行細緻的管理,而所有這些都不會犧牲安全性和可靠性。Quay 使 GitOps 可以使用本地鏡像註冊表,而不是像 GitHub 那樣要使用基於雲的鏡像註冊表。

8、Auto-Assign

爲了使你的 Git 拉取請求和更新井井有條,可以使用一些工具。Auto-Assign 就是其中之一。顧名思義,每當發現新的拉取請求時,它都會分配審查者,因此可以密切監控變更。

9、CodeFactor

爲了持續維護代碼的質量,CodeFactor 是另一個可以集成到 GitOps 管道中的工具。它是一個自動的代碼審查工具,當發現新的 Git 提交時,它會根據預定義的標準自動檢查代碼。

10、DEP

管理依賴關係是關鍵,特別是當你的應用程序是基於 Go 之類的語言構建的時候。爲了應對這種實例,你可以使用 DEP。它是專門爲管理 Go 應用程序和服務的依賴關係而創建的,並且它不會減慢 GitOps 管道的速度。

11、Kodiakhq

另一個用於管理代碼的 Git 應用程序是 Kodiakhq。但該工具主要專注於自動更新和管理拉取請求,同時減少 CI 的負載。隨着 Kodiakhq 的啓動和運行,不再需要手動合併請求,這可以節省時間和寶貴的資源來執行其他任務。

12、Atlantis

如果你使用 Terraform 來簡化資源配置,那麼可以使用 Atlantis 爲管道添加其他自動化功能。Atlantis 自動執行對 Terraform 的拉取請求,並在發現新請求時觸發進一步的操作。

13、Helm Operator

Helm Operator 還通過將自動化引入到 Helm Charts 發佈中,進一步將 Helm 推向了新的高度。它被設計爲在 GitOps 管道中從頭開始工作,因此集成 Helm Operator 非常簡單。

14、Gitkube

Gitkube 更加專注於使用 Git push 構建和部署 Docker 鏡像。該工具使用起來非常簡單,不需要對單個容器進行復雜的配置。這也是一個可以在部署階段節省大量時間和精力的工具。

15、Jenkins X

當談論 GitOps 工具時,我們真的不能不談 Jenkins X。Jenkins 最初是作爲 Kubernetes 的 CI/CD 平臺的,但是該平臺可以用來無縫地管理你的 GitOps 管道。它甚至具有一個內置的預覽環境來最大程度地減少代碼和部署錯誤。

16、Restyled

爲了實現更好的標準化,Restyled 會強制執行某種編碼樣式。由於 GitOps 被設計爲一種標準化端到端流程的方法,因此具有自動執行代碼審查和重新合併請求的能力是一個巨大的優勢。

17、Argo CD

Argo CD 採用了一種更直觀的方式來處理 GitOps。它可視化了應用程序和環境的配置,並使用圖表和可視化的提示來模擬 GitOps 管道。你也可以將 Argo CD 與 Helm 和其他 GitOps 工具結合使用。

18、Kapp

Kapp 是 Kubernetes 應用程序的衍生名稱,專注於管道的部署方面。它將由其他自動化工具創建的軟件包集成到 GitOps 工作流中,並基於它們生成 Kubernetes 配置。

19、Kpt

Kpt 或 “kept” 是用於簡化 Kubernetes 資源部署和配置的另一種工具。它使用聲明來處理資源配置,從而使開發人員可以更好地控制他們的基礎設施。使用 Kpt 完全不需要手動配置。

20、Stale

Stale 能處理一些令許多開發人員都很惱火的事情:懸而未決或被放棄的問題以及拉取請求。使用 Stale,你可以配置何時將拉取請求和問題視爲放棄,然後自動管理這些請求和問題。

21、 Kube Backup

Kube Backup 是維護 Kubernetes 集羣配置的重要工具。它將集羣備份到 Git,特別是集羣的資源狀態。如果環境發生災難性故障,可以使用 Kube Backup 來更快地啓動和運行應用程序。

22、Untrak

Untrak 是一個用於管理 Kubernetes 集羣資源的便捷工具。該工具會自動在集羣中查找未跟蹤的資源。它還可以處理垃圾回收,並能幫助你保持 Kubernetes 集羣的精益。

23、Fluxcloud

Fluxcloud 整合了 Slack 與 GitOps。如果你使用 Flux(FluxCD),那麼也一定會喜歡 Fluxcloud。它消除了對 Weave Cloud 的需求,並允許爲每個 FluxCD 活動生成 Slack 通知。

24、Stickler CI

代碼風格的指南和標準!Sticker CI 在不影響管道本身的情況下簡化了編碼風格的實現。只要在工作流程中實現 Stickler CI,就可以快速且一致地進行代碼檢查和標準化。

25、Task List Completed

下一個工具非常簡單。Task List Completed 將停止合併具有未完成任務的拉取請求。無需手動檢查每個拉取請求的任務,就可以使用該工具來保護部署環境。

26、Slack

我們已經提過了如何使用 Fluxcloud 進行通知,但是如果你決定不使用 FluxCD,那怎麼辦呢?你仍然可以通過激活本地的 Slack 插件來獲取 Git 的變更通知。Slack 支持關閉和打開拉取請求和問題等的任務,以及直接從 Slack 應用程序中與之交互的任務。

27、CI Reporter

即使已經有了最好的 QA,仍可能會發現代碼中的錯誤。這就是 CI Reporter 能派上用場的地方。該工具會收集構建失敗的錯誤報告,然後再將其添加到相關的拉取請求中。

28、PR Label Enforce

想要更精細化地控制拉取請求的合併,可以使用 PR Label Enforce。在合併拉取請求之前,該工具會強制執行某些標籤。可以將 “ready” 或“ checked”之類的標籤設置爲參數,然後使用其他工具來自動分配這些標籤。

29、Git-Secret

想要在 Git 中存儲私有數據,可以使用 Git-Secret。當你需要存儲敏感的配置文件或密鑰時,這非常方便。安全性在 GitOps 中非常重要,因此 Git-Secret 作爲一種確保安全性的方法非常寶貴。說到安全性,你還可以使用……。

30、Kamus

Kamus 能自動將零信任加密和解密合併到你的 GitOps 工作流中。與 Git-Secret 結合使用,你可以在不減慢 CI/CD 週期的情況下增強整個管道的安全性。

31、Sealed Secrets

如果你需要採取進一步措施,還可以使用 Sealed Secrets 通過單向加密過程來對密鑰進行加密。Sealed Secrets 爲 GitOps 管道提供了最大的安全性。

32、Pull Panda

雖然 GitOps 是一種非常敏捷的方法,但是保持生產效率仍然是必須要做的事情。Pull Panda 可以幫忙你實現這一目標,它可以使協作工作變得更輕鬆、更高效。它向 Slack 發送拉取提醒和分析,甚至可以自動執行拉取請求的分配。

33、Sleeek

Sleek 也是一個管理生產效率和簡化流程的機器人,但是它對這個問題的處理方式略有不同。Sleek 基本上是一個機器人,是一個虛擬助手,可以幫助項目經理和開發團隊通過一系列問題來保持同步。

老實說,這樣的例子不勝枚舉;有很多很棒的工具可以幫助我們集成 GitOps 並顯著地簡化部署管道。作爲一種方法,GitOps 確實爲開發人員提供了很大的靈活性,並使他們在管理 Kubernetes 集羣和雲資源配置時能夠更加精細。在使用 Kubernetes 時,這確實可以滿足雲原生的需求,可以實現持續部署。

原文:

https://dzone.com/articles/30-tools-list-for-gitops

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/YOuMe2LDr5m6yj4qxa4gpw