GitOps


什么是GitOps

持續的GitOps,新時代的DevOps實踐,通過Kubernetes集群來實現基於git的全自動化的流程來提高交付速度。簡單地說,GitOps是使用Git拉請求管理基礎設施部署和軟件部署的藝術和科學。

兩個關鍵概念:

  • 軟件的描述表示: 使用Kubernetes,應用程序和底層基礎結構之間的關系純粹是聲明性的。您使用聲明式(YAML)請求您希望從基礎設施中獲得什么。這些YAML的實現細節被底層的Kubernetes集群抽象出來,這些集群具有控制器、調度器、KubeDNS、KubeProxy、操作符等,這使我們能夠從傳統的“基礎結構作為代碼”轉移到“數據描述的基礎結構”。更多信息請訪問GitHub。這里的關鍵是,應用程序所需的每個聲明性標記(來自application Developer / application Operator / Cluster Operator)都被充實到持續交付管道中的YAML中,並最終推入GitOps存儲庫。並且應該對集群中的任何手動YAML更改都零容忍。

  • 連續同步:連續同步的意思是,不斷地查看git存儲庫,以將任何狀態更改反映到Kubernetes集群中。這是一個強大的想法,來自一個叫做Flux的工具。Flux試圖將部署自動化從Kubernetes集群外部轉移到使用Kubernetes操作符的集群中。

持續GitOps是四個主要組件的交集,它們共同創造了奇跡:

  • Git存儲庫:將應用程序的聲明性定義存儲為YAML的源代碼存儲庫。
  • Kubernetes集群:我們部署應用程序的底層集群。
  • 同步代理:Kubernetes操作符擴展,它負責將Git存儲庫和應用程序狀態持續同步到集群中。
  • 持續部署管道:編排整個自動化流程的連續部署管道。

為什么使用GitOps ?

使用拉請求來管理基礎設施可能看起來有點像一個奇怪的黑客——使用錘子來刷牆或者把車開到水里。
但是當你仔細觀察時,你會發現GitOps背后的實踐是很有意義的。通過將基礎設施管理任務轉化為一系列的拉請求,您可以實現以下目標:

  • 您將獲得一個用於控制基礎設施的工具和接口。這樣就不需要使用不同的工具來控制不同類型的基礎設施。

  • 您可以獲得對您的配置所做的所有更改的版本控制。這對於回滾更改和審計非常方便。

  • 您可以使用diff來檢測更改並自動生成警報。這不僅意味着您有一種不斷監視更改的方法,而且如果實際情況與應該配置的方式不同,那么很容易發現問題。

  • 因為您使用的是Git拉請求(大多數軟件開發人員已經很熟悉了),所以您不必為了管理基礎設施而向您的團隊教授新工具。

  • 通過持續的部署自動化提高了生產力。

  • 通過推動代碼而不是容器來增強開發人員的體驗。

  • 由於所有集群更改的自動審計日志,提高了穩定性。

  • 更高的可靠性來自Git內置的恢復/回滾和fork,並且來自單一的可靠來源。

  • 端到端工作流的一致性和標准化。

  • 更強的安全性,因為Git具有強大的正確性和用於跟蹤和管理更改的加密技術。

  • 更低的停機時間帶來的成本效益,極大地提高了生產率。

參考:

https://www.weave.works/technologies/gitops/
https://www.atlassian.com/git/tutorials/gitops
https://www.cloudbees.com/gitops/what-is-gitops
https://medium.com/@imarunrk/continuous-gitops-the-way-to-do-devops-in-kubernetes-896b0ea1d0fb


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM