本文翻译自以下博客文章。
原文: https://cloudnativenow.com/features/the-4-levels-of-gitops-maturity/
GitOps成熟度4阶段 (The 4 Levels of GitOps Maturity)
2021年8月30日 | 容器、GitOps、GitOps成熟度、Kubernetes 作者: Paul Fremantle
GitOps正在迅速成为操作和部署Kubernetes应用程序和集群的“黄金标准”。GitOps成功的客观衡量标准主要由DevOps相关指标决定。这些DevOps指标包括速度(velocity)、部署频率和恢复时间。这些指标与业务竞争力和成功密切相关。换句话说,能够更好地交付软件的组织将拥有更强的竞争力。
此前一直缺乏的是一种方法,可以帮助团队理解如何根据其组织有效地使用GitOps。这可以作为衡量GitOps最佳实践和运营效率已采纳程度以及未来还需要采纳多少的标准。为此,最近创建的
GitOps成熟度模型(GitOps Maturity Model)
提出了组织在采纳GitOps时通常会经历的四阶段方法。它可以作为指导,从单一集群和应用程序管理开始,逐步发展到管理数百甚至数千个集群的大规模部署。
根据Thoughtworks的作者马丁·福勒(Martin Fowler)的说法,成熟度模型是“一种工具,旨在帮助个人或团体评估其当前效率,并确定为提高绩效下一步需要掌握哪些能力”。在此背景下,GitOps成熟度模型是一个简单的模型,允许组织判断其在GitOps采纳旅程中的位置。该模型涵盖了从最基本阶段(即将定义存储在Git中,并在没有持续协调的情况下推送到CI系统)到最先进阶段(能够依靠GitOps将部署扩展到数千个集群)的所有内容。
逐级提升 (Leveling Up)

GitOps成熟度模型所代表的四个演进阶段以及组织在获取价值过程中所经历的流程如下:
- 0阶段 (Level 0): 组织正在向云原生和容器化基础设施迁移,并将部署配置存储在Git中,但尚未进行
持续协调(reconciliation)
。在此阶段的团队可以享受到一些好处,例如基础设施配置速度的提高、可重复性和不变性(immutability)。 - 1阶段 (Level 1): 在此阶段,GitOps用于部署应用程序,并通过
协调和漂移检测(drift detection)
确保运行中的应用程序与Git中存储的
预期状态(desired state)
持续同步。通过安全的GitOps交付管道实现自动化和标准化,可以大幅提高部署频率、操作可见性和可审计性,同时降低成本和平均恢复时间(MTTR)。 - 2阶段 (Level 2): 组织将GitOps的流程标准化、自动化、控制和安全概念应用于整个环境,包括集群的创建和管理。这为整个基础设施和应用程序带来了好处,使团队能够更自主地工作。平台运营团队可以在不增加团队人员的情况下扩展集群数量,同时遵守治理、风险和合规协议。
- 3阶段 (Level 3): 在大规模环境中,组织开始使用GitOps管理
集群舰队(fleets of clusters)
,以确保一致性、明确的策略执行和速度。在此阶段的组织可以拥有跨云供应商选择权、高级策略模型、大规模部署以及对数千个集群的可见性和控制权。
超越基础 (Moving Beyond the Basics)
除了评估组织在GitOps旅程中的位置外,成熟度模型还是一个有用的工具,可以帮助确定改进DORA指标的下一步。DORA指标已被证明与业务目标和竞争力密切相关。实际上,在许多案例中,GitOps已被证明有助于组织进入DORA指标的“精英(elite)”水平。通过这种方式,GitOps的技术优势与业务绩效之间建立了明确的联系。
这并不意味着所有组织都必须采取相同的路径。有些组织可能希望直接跳到更高的阶段,而另一些组织可能认为没有必要达到更高的阶段。然而,明确的一点是,GitOps的真正好处从1阶段开始。
开发团队可以使用开源GitOps工具轻松实现1阶段(“应用程序GitOps”)。这使得应用程序开发人员和DevOps专业人员能够快速配置应用程序,并从Git仓库持续部署和协调到任何Kubernetes集群。例如,Weave GitOps使用Flux实现漂移检测、镜像自动化和协调,从而确保集群准确反映Git中的特定分支或文件夹。
对于大型组织,平台团队可以使用企业级开源工具在多个区域、可用区或多云环境中创建和管理大量集群。这依赖于Cluster API(CAPI),该API受到AWS、Azure、Google、VMware等众多云提供商的支持。集群配置的更改也以与1阶段应用程序相同的方式进行协调。每个开发团队都可以持续地将他们的工作负载部署和协调到这些集群中(即,2阶段包含1阶段的所有好处)。
只有少数大型组织进入了下一个阶段,通过定义具有相同配置的多个集群来实现“舰队管理(Fleet management)”。一个典型的例子是德国电信(Deutsche Telekom)的Das Schiff项目,该项目旨在利用GitOps将5G工作负载一致且有效地交付到数千个边缘集群。然而,并非所有组织都有3阶段这样的需求。
总结 (Bringing It All Together)
GitOps由一个高度协作的过程组成,该过程将Git仓库作为CD管道动态支持的“单一事实来源(Single Source of Truth)”。GitOps的优势不胜枚举,现在正被更广泛地理解。它也正在成为技术领域主要供应商之间Kubernetes操作模型的标准。亚马逊、Codefresh、GitHub、微软和Weaveworks等公司正在CNCF的GitOps工作组内就GitOps的原则和技术方面进行合作,并支持其采纳。
GitOps之所以受到如此多的关注,主要原因之一是它处于人、流程和技术的交汇点。因为它基于已经在组织内与多个团队有效运作的众所周知的流程,所以它很好地融入了组织和团队文化。
GitOps成熟度模型可以被视为支持GitOps的下一步:帮助组织规划更结构化的方法来采纳GitOps。无论您的组织是否遵循这四个阶段的精确路径,理解一般的发展过程都是有益的。它能帮助您理解部署方式为何会经历这样的旅程,以及提高GitOps成熟度所带来的好处。
发表回复