Argo CD 是一個實現 GitOps 的框架,他會透過 Git 儲存庫拉取資源。那 Git 要如何儲存管理這些內容 ? 如果將 Kubernetes YAML 存放在與應用程式程式碼分開的 Git 儲存庫中,有以下幾大優點:
根據以上,應用程式程式碼可使用任何分支策略,例如 GitFlow,因為它僅用於 CI。對於 Kubernetes YAML 儲存庫,用於 CD。當然根據不同組織規模和工具有不同策略。
--> Commit
|
O----Main----O----Main----O----Main----O
在單分支策略中,主分支始終會包含每個環境確切配置。理論上會有所有環境的默認配置,以及在單獨的環境特定目錄中定義的環境特定覆寫。單分支策略可以應用於 Kustomize 或是 Helm Chart 等工具。
在多分支策略中,每個分支可相當於一個環境。這優點是每個分支將具有環境的確切部署 Kubernetes 資源,每個分支還將具有獨立的提交歷史記錄,以便在需要時進行追蹤和回滾。使用此方式基本上環境之間不會共享配置。對於 Kustomize 就不適用。
對於較大團隊,擁有數十或數百名開發人員環境中,基本上會希望有多個儲存庫讓團隊可以彼此解耦,並且以自己團隊的速度運行。組織內的不同團隊將具有不同的程式碼發佈節奏和流程,如果使用單體配置儲存庫,一些功能可能完成數週,但需要等待預定的發佈。這將導致延遲將功能交付給最終用戶並發現潛在的程式碼問題,回滾也成一個問題,因為一個程式碼缺陷將需要回滾所有團隊的所有更改。
使用多儲存庫可依據功能進行組織,如果儲存庫是不同面向的可部署功能,那在團隊之間也許重組後,移動這些功能將更容易。
FROM www.cythilya.tw