GitOps簡(jiǎn)介
Git是一個(gè)分布式版本控制系統(tǒng),我們?cè)谄渲泄芾碓创a。它可以具有文本,證書(shū)或配置文件。
DevOps已成為許多組織的數(shù)字化轉(zhuǎn)型策略。它是關(guān)于軟件開(kāi)發(fā)和運(yùn)營(yíng)團(tuán)隊(duì)一起工作以及工程設(shè)計(jì)和自動(dòng)化的實(shí)踐。這將導(dǎo)致編寫(xiě)用于小變更的代碼,并非常迅速地測(cè)試和部署這些小變更。這是一個(gè)了不起的進(jìn)步,也是一種很棒的軟件實(shí)踐。
為什么需要GitOps?
但是現(xiàn)在,在現(xiàn)代環(huán)境中,我們面臨著更多的挑戰(zhàn)。我們需要軟件應(yīng)用程序才能在龐大的Web規(guī)模上工作,并處理微服務(wù),容器化和服務(wù)網(wǎng)格。在當(dāng)今的容器和Kubernetes的現(xiàn)代世界中,應(yīng)用程序需要在高負(fù)載時(shí)擴(kuò)展運(yùn)行的基礎(chǔ)架構(gòu)。當(dāng)沒(méi)有負(fù)載時(shí),它需要縮減規(guī)模,并以非常復(fù)雜的方式在許多應(yīng)用程序和微服務(wù)中動(dòng)態(tài)地完成所有工作。
為了應(yīng)對(duì)這些現(xiàn)代運(yùn)營(yíng)挑戰(zhàn),GitOps發(fā)揮了作用。在談?wù)揋itOps之前,讓我簡(jiǎn)要地告訴您什么是Git,什么是Ops。
Git是一個(gè)分布式版本控制系統(tǒng),我們?cè)谄渲泄芾碓创a。它可以具有文本,證書(shū)或配置文件。我們使用Git維護(hù)所有這些文件,并且還將其用于與不同的團(tuán)隊(duì)成員進(jìn)行協(xié)作。
Ops術(shù)語(yǔ)來(lái)自同一DevOps術(shù)語(yǔ),在該術(shù)語(yǔ)中,我們?cè)?jīng)作為操作的一部分進(jìn)行發(fā)布,部署,操作和監(jiān)視應(yīng)用程序。
什么是GitOps?
GitOps是用于持續(xù)部署云原生應(yīng)用程序的過(guò)程。這個(gè)過(guò)程是以開(kāi)發(fā)人員為中心的,它使用像Git這樣對(duì)開(kāi)發(fā)人員友好的工具來(lái)操作基礎(chǔ)架構(gòu)。這里的Git是所有基礎(chǔ)架構(gòu)和應(yīng)用程序部署自動(dòng)化的唯一事實(shí)來(lái)源。
它是一個(gè)操作框架,它采用了用于應(yīng)用程序開(kāi)發(fā)的DevOps最佳實(shí)踐。這些是版本控制,協(xié)作,合規(guī)性,CI / CD,并將它們應(yīng)用于基礎(chǔ)架構(gòu)自動(dòng)化。簡(jiǎn)而言之,GitOps具有三個(gè)主要組件。
它是基礎(chǔ)架構(gòu)即代碼(IaC),合并請(qǐng)求(作為變更代理)和CI / CD自動(dòng)化的組合。
以下是在組織中使用GitOps的好處:
更好的開(kāi)發(fā)人員體驗(yàn):它可以幫助開(kāi)發(fā)人員使用非常熟悉的工具(如Git)輕松管理Kubernetes,甚至不知道其內(nèi)部細(xì)節(jié)。它也提高了新加入開(kāi)發(fā)人員的生產(chǎn)力。
可靠:借助Git中的功能(例如回滾),萬(wàn)一發(fā)生任何崩潰,可以輕松恢復(fù)到穩(wěn)定的發(fā)行版本,從而大大減少了恢復(fù)時(shí)間。
一致:作為基礎(chǔ)架構(gòu),GitOps的端到端工作流程非常一致;一種模型提供了應(yīng)用程序,Kubernetes管理以及所有內(nèi)容。
更快的部署:通過(guò)將持續(xù)的部署自動(dòng)化與反饋控制回路集成在一起,可以幫助您比以前更快地部署應(yīng)用程序。
自我記錄環(huán)境:通過(guò)檢出master分支,可以獲得有關(guān)系統(tǒng)上所有更改的完整歷史記錄以及所部署內(nèi)容的所有詳細(xì)信息。它有助于與其他團(tuán)隊(duì)輕松協(xié)作或與新成員共享足夠的知識(shí)。
安全性和合規(guī)性: GitOps幫助大型組織保持安全性和合規(guī)性。您可以鎖定實(shí)際有權(quán)合并到分支的人員的權(quán)限。

首先,用戶更改Git存儲(chǔ)庫(kù)中的代碼。
然后創(chuàng)建一個(gè)容器映像,并將其推送到容器注冊(cè)表。
它被更新為配置更新程序。
用戶創(chuàng)建合并到其他分支的拉取請(qǐng)求后,便會(huì)部署到相關(guān)分支。
然后,它會(huì)測(cè)試是否一切正常。
一旦一切順利,審閱者便可以將其合并。
合并后,它將轉(zhuǎn)到測(cè)試分支。
創(chuàng)建拉取請(qǐng)求后,它將部署到該測(cè)試分支。
下面是一些流行的GitOps工具,在使用GitOps工作流程時(shí)必須嘗試這些工具。我不在這里列出Git和Kubernetes,因?yàn)檫@很明顯!
#1。 Flux
Flux由Weaveworks于2016年創(chuàng)建。
它是Kubernetes集群的GitOps運(yùn)算符。它會(huì)定期提取遠(yuǎn)程Git存儲(chǔ)庫(kù),并在清單文件中查找任何新更改。如果存儲(chǔ)庫(kù)中發(fā)生更改,它將更改應(yīng)用到集群。
#2。ArgoCD
ArgoCD還是GitOps運(yùn)營(yíng)商,但具有Web用戶界面。它使用視覺(jué)和圖表模擬了您的GitOps管道。您還可以使用此工具可視化您的環(huán)境和應(yīng)用程序配置。
#3。Jenkins
Jenkins X是針對(duì)Kubernetes集群的CICD解決方案,但與經(jīng)典Jenkins不同。
它用作集群創(chuàng)建,容器部署,自動(dòng)回滾等的GitOps工具。當(dāng)在git存儲(chǔ)庫(kù)中推送更改時(shí),Jenkin X將在觸發(fā)構(gòu)建后讀取并更新其配置。
#4。WKSctl
WKSctl是一個(gè)GitOps工具,它使用Git提交來(lái)管理Kubernetes集群。在GitOps運(yùn)行模式下,將根據(jù)cluster.yml和保存在Git上的machines.yml文件中的詳細(xì)信息配置集群。
#5。Gitkube
Gitkube是使用Git push在Kubernetes集群上構(gòu)建和部署Docker映像的開(kāi)發(fā)的理想選擇。
它非常容易設(shè)置,并且需要簡(jiǎn)單的基于公鑰的身份驗(yàn)證。
#6。Helm Operator
Helm Operator是開(kāi)源的Kubernetes運(yùn)算符,用于以聲明方式管理Helm Chart發(fā)布。當(dāng)與助焊劑結(jié)合使用時(shí),它成為用于自動(dòng)釋放的合適的GitOps解決方案。
結(jié)論
DevOps一直是IT行業(yè)的流行語(yǔ)。但是,有一個(gè)新術(shù)語(yǔ)叫做GitOps,它現(xiàn)在統(tǒng)治著微服務(wù)和基于容器的平臺(tái)。我們可以利用GitOps在基于容器的環(huán)境(如Kubernetes)上部署應(yīng)用程序。
