每个团队都在寻找一种银弹来简化他们的流程,快速交付并保持环境的稳定。近年来被广泛采用的一种方法是GitOps。尽管这个词听起来可能像是另一个流行的DevOps术语,但它代表了团队在管理基础设施和部署方式上的突破性变革。
在本文中,我们将讨论GitOps,它的含义以及它与传统DevOps解决方案的不同。
什么是GitOps?
GitOps是一个使用基于Git的工作流进行基础设施自动化和应用程序部署的框架。它的核心是采用开发者控制软件变更的同样原则和实践应用于运维。简单来说,GitOps是一种实践,其中Git仓库是唯一的真理来源,变更或修改通过拉取请求进行,一个自动化系统负责将这些变更应用到目标环境。
GitOps的关键原则
GitOps的主要特点包括以下内容:
Git作为真理来源
所有内容,包括基础设施、配置和应用程序部署,都必须存储在Git仓库中。这允许您控制所有内容。集群从Git仓库读取并应用配置、部署配置和环境管理工具。工具帮助跟踪变更;如果检测到仓库中的变更,工具将自动应用此变更。
声明式基础设施
意味着您需要使用YAML或JSON定义系统中所有事物的声明状态。工具会将该状态与实际状态进行比较,并尽一切可能使其与声明状态保持一致。
自动化和CI/CD
对Git仓库所做的更改应自动运行操作。这可以是Jenkins、ArgoCD或Flux,它们将自动部署新的配置或应用版本,以确保系统与仓库的状态相匹配。缩写中的“CD”部分尤其重要,因为更改应该持续并且尽可能快速地出现。
自我修复和持续协调
GitOps工具通常具有监视系统并确定其观察到的内容是否与仓库中存储的内容一致的方式。如果发现任何偏差,工具将通过将环境更改为仓库中描述的内容来解决所谓的“修复”环境。
从DevOps到GitOps的转变
在深入了解GitOps的具体细节以及它与DevOps的矛盾之前,重要的是要认识到经典DevOps的贡献。DevOps指的是以增强协作同时优化自动化流程(如测试、部署和基础设施配置)的方式来管理开发和运维团队。
一般来说,DevOps流程包括在软件开发生命周期内采用Jenkins、Kubernetes、Docker和Ansible等工具开发持续集成持续交付(CI/CD)流程,从而提高软件交付的速度。
GitOps适合在哪里?
GitOps在DevOps演变原则的基础上,以更结构化的方式构建。它以更高级的方式将Git方法集成到第二天操作中,而不是作为附加的事务。
在传统的DevOps技术工作时,很可能会出现不同的团队同时对基础设施和应用程序代码进行操作,这可能会导致风险。所有这些活动都是在Git下进行的;还有基础设施,任何大小的更改都同样进行版本控制。
采用GitOps工作流的优点
增强的安全性和合规性
拥有版本控制的Git仓库作为唯一与基础设施和应用程序交互并进行更改的方式之一的好处是,它生成了一条可验证的审计跟踪。
增强的开发者体验
开发者可以使用他们已经熟悉的工具,如Git,来进行基础设施管理。通过让开发者使用相同的工具来管理基础设施,GitOps消除了对额外工具的需求,使得采用GitOps工作流程变得更加容易。
快速回滚和灾难恢复
许多传统的DevOps管道的一个挑战是它们可能容易回滚更改。GitOps允许您通过检出仓库的早期版本,将整个系统回滚到任何先前的状态。这可以在灾难情况下大幅减少恢复时间。
跨环境的统一性和一致性
Git是真相的来源,这确保了Git中的任何内容——从开发分支到生产分支——都应与系统的状态相匹配。不再有“在我的机器上能运行”的说法。不同环境中不同的配置是手动更改时常见的部署问题。“It works on my machine.”
可扩展性
GitOps比传统的配置管理解决方案更具可扩展性。它引入了声明式而非命令式的概念。使用GitOps时,您只需描述一次环境,而不是在一个地方更改环境。然后工具会持续确保环境是正确的,并在所有系统中构建符合该描述的机器。
GitOps如何转变DevOps实践
GitOps 是 DevOps CI/CD 工具和流程向左完全转变的新趋势。以下是一些领先的传统 DevOps 解决方案现在采用 GitOps 或计划在未来融入 GitOps 实践的方式:
1. 基础设施即代码
DevOps 能够创建和管理基础设施,甚至可能自动化这些流程至关重要。DevOps 大师可能会使用 Terraform 或 CloudFormation 等工具,但另一位专家可能会执行相同的脚本来创建一个完全不同的环境。这就是基础设施即代码的作用所在。它主要意味着将所有 IaC 配置存储在 Git 中。在这个系统中,一切都是自动化的,更重要的是,持续检查。
2. CI/CD 流水线
在传统的 DevOps 工作负载中,CI/CD 流水线自动化测试、构建和部署代码。然而,在 GitOps 中,CI/CD 流水线也用于部署基础设施变更。像 ArgoCD 和 Flux 这样的工具通过监控 Git 仓库并在有任何更改推送到它时自动更新环境,增强了传统的 CI/CD 流水线。因此,流水线为开发者做得更多,加快了周期。
3. 监控和可观测性
GitOps 专注于监控和可观测性,这使得它更加可靠。GitOps 中使用的工具会持续监控实时环境并将其与 Git 中定义的状态进行比较。因此,如果系统偏离了定义的状态,它可以自动回滚。自动回滚能够快速恢复有问题的环境,最小化停机时间,并提高系统的可靠性。
结论
总的来说,GitOps 不仅仅是一个流行词,而是一种可以改变传统 DevOps 实践的强大方法。通过将基础设施和部署视为代码,GitOps 消除了手动操作的需要,并确保了所有环境中的预期状态。
对于考虑现代化 DevOps CI/CD 服务的团队来说,采用 GitOps 工作流程是更高效、更可靠地实现预期结果的途径。有了像 ArgoCD 和 Flux 这样的工具,GitOps 有着光明的未来,并可能成为未来 DevOps 领域中占主导地位的一部分。
Source:
https://dzone.com/articles/an-introduction-to-gitops