GitOps的4個核心原則

通過DevOps,運維和開發(fā)團隊在自己選擇的工具上進行協(xié)作。GitOps提供了一種聲明性方法,并補充了DevOps。它允許應(yīng)用程序交付和集群管理。GitOps與Kubernetes共享相同的概念,使已經(jīng)使用它的團隊更容易適應(yīng)。

本文來自微信公眾號“開源云中文社區(qū)”。

現(xiàn)在GitOps已經(jīng)得到了足夠的關(guān)注,所以簡要介紹一下它的原則是合適的。

去年,OpenGitOps社區(qū)發(fā)布了GitOps Principles 1.0。GitOps得到了普遍支持,在開發(fā)GitOps引擎方面也有許多相互競爭的項目,例如與Argo和Flux這兩個來自CNCF的畢業(yè)項目。但專注于原則可以讓每個人都知道什么是GitOps,更重要的是,它有助于定義什么不是GitOps。

開源軟件工程師Scott Rigby寫道,OpenGitOps將GitOps定義為一套操作和管理軟件系統(tǒng)的原則。“當使用GitOps時,系統(tǒng)或子系統(tǒng)的期望狀態(tài)被聲明性地定義為版本化的、不可變的數(shù)據(jù),并且運行的系統(tǒng)的配置是從這些數(shù)據(jù)中不斷派生出來的。這些原則源于現(xiàn)代軟件操作,但植根于預(yù)先存在并被廣泛采用的最佳實踐。”

通過DevOps,運維和開發(fā)團隊在自己選擇的工具上進行協(xié)作。GitOps提供了一種聲明性方法,并補充了DevOps。它允許應(yīng)用程序交付和集群管理。GitOps與Kubernetes共享相同的概念,使已經(jīng)使用它的團隊更容易適應(yīng)。

在cdCON+GitOpsCon會議上,Rigby和紅帽高級首席產(chǎn)品經(jīng)理Christian Hernandez介紹了GitOps原則。

以下是本次演講和會議上其他演講的要點:

原則1:GitOps是聲明性的。

由GitOps管理的系統(tǒng)必須具有以聲明方式表示的期望狀態(tài)。

《紐約時報》的軟件工程師Eve Ben Ezra在cdCON+GitOps Con上表示,GitOps允許自動化安全實踐。DevOps鼓勵協(xié)作,這意味著將安全性納入軟件開發(fā)生命周期的每個階段。

原則2:GitOps應(yīng)用程序是有版本的且不可變的

期望狀態(tài)的存儲方式可以強制執(zhí)行不變性、版本控制和完整的版本歷史記錄。

一般觀點:回滾應(yīng)該很簡單。

Ezra說:“GitOps為基礎(chǔ)設(shè)施和應(yīng)用程序的所有更改提供了可審計的跟蹤,這更進一步。”

Ben Ezra說,版本控制允許組織發(fā)現(xiàn)其安全性中的漏洞,還允許測試和聲明性基礎(chǔ)設(shè)施。使用像Open Policy Agent這樣的工具,這是一個用于在云原生環(huán)境中建立授權(quán)策略的開源項目,可以提高生產(chǎn)力,因為一旦實現(xiàn)自動化,團隊就可以減少為基礎(chǔ)設(shè)施是否合規(guī)而煩惱的時間,這給了他們更多的時間進行創(chuàng)新和功能開發(fā)。

Ben Ezra說:“雖然自動化是DevOps的重要組成部分,但它絕不是唯一的方法。它還需要跨職能協(xié)作,打破孤島,在整個組織中共享知識。GitOps建立在這些原則之上,即利用自動化和基礎(chǔ)設(shè)施作為代碼來減少配置漂移,并為整個團隊或組織提供單一的真相來源。”

通過寫下來,所有團隊成員都可以為基礎(chǔ)設(shè)施代碼做出貢獻,這促進了整個軟件開發(fā)生命周期的共同責任。同樣重要的是,每個人都意識到了這些變化,所以如果他們看到你錯過的東西,他們可以大聲說出來。

Ben Ezra說:“例如,在《紐約時報》,我們利用OPA的實用程序來提高GitOps運營框架內(nèi)的反饋和開發(fā)人員生產(chǎn)力。”

原則3:GitOps應(yīng)用程序是自動拉取的

軟件自動化自動從源中拉取聲明的狀態(tài)聲明。

以Flux為例。Flux是一套面向Kubernetes的持續(xù)和漸進交付解決方案,具有開放性和可擴展性,為開發(fā)人員和基礎(chǔ)設(shè)施團隊提供GitOps和漸進交付。

Weaveworks的開發(fā)人員體驗工程師Priyanka Pinky Ravi表示:“因此,F(xiàn)lux是一套專注于安全性、速度和可靠性的持續(xù)交付工具。”

“他們專注于自動化。因此,我們的想法是,你有一個安裝在集群上的Kubernetes控制器,它們在一個協(xié)調(diào)循環(huán)上運行,這只是你設(shè)置的一個間隔。每次運行時,源控制器都會進入并從你說的任何源中提取,例如git存儲庫、home或repo Image、Image注冊表、OCI注冊表。這個想法是,它提取在那里找到的清單,然后將它們實際應(yīng)用到集群上。”

原則4:GitOps應(yīng)用程序不斷協(xié)調(diào)

“軟件代理不斷觀察實際的系統(tǒng)狀態(tài),并嘗試應(yīng)用期望狀態(tài)。”

值得注意的是,GitOps社區(qū)有多種不同觀點。但有了一套原則,社區(qū)可以構(gòu)建反映GitOps是什么和不是什么的核心焦點的方法;至少,這就是概念。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論