什么是 GitOps

大约 2 分钟

随着 DevOps 以及 GitOps 之类辅助实践的兴起,软件从架构设计到代码被部署到生产环境的速度是越来越快。

DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运维和质量保障(QA)部门之间的沟通、协作与整合。

DevOps 通过实践和规范来提高我们生成代码的速度,并保证代码的可靠性。

GitOps 是在具体Kubernetes的应用实践中出现的, 具体定义是 Alexis 在2017年8月发表的一篇博客 (opens new window),这篇文章中第一次提到了 GitOps 的概念和他们的实践应用。

我们的整个系统状态都在版本控制之下,并在一个单一的 Git 仓库中进行描述。操作上的改变是通过 pull request (加上构建和发布管道)来进行的;Diff 工具可以检测到任何分歧,并通过 Slack 警报通知我们;同步工具可以实现收敛。还通过 Git 提供回滚和审计日志。

GitOps 是一种做持续交付的方式。它的工作原理是将 Git 作为声明式基础架构和应用的核心。当 Git 发生变化时,自动交付管道会自动将版本改动推包。但这个想法更进一步--使用工具来查看实际的生产状态,并告诉你什么时候的源代码与真实世界不一致,让你有能力发现差异并相应地解决问题。换句话说,GitOps 扩展了管道,有一个观察和控制系统的反馈循环 。

# 主要优点

主要优点就是 GitOps 赋予开发者做运维的权力。

为了做到这一点,GitOps 旨在通过将熟悉的工具应用于困难的事情:运维管理和监控,从而提高开发人员的工作效率。 每个开发者都可以使用 Git 并进行拉取请求;现在他们可以使用 Git 来加速和简化 Kubernetes 等的运维任务。其好处是深远的。

一个云原生 CICD 管道的模型。

更快的平均部署时间和平均恢复时间。

可操作的警报。

稳定的回滚(即按照 Git 的规定进行重置/回滚/Fork)。

以及理解、观察和管理应用程序的整体一致性方法。

# 应用场景

在 Alexis 的第二篇文章 (opens new window)中介绍了 GitOps 是持续交付与云原生的结合(GitOps is Continuous Delivery meets Cloud Native)。

GitOps 作为一个流水线方案,没有一个单一工具可以完成整条流水线,所以需要去组合开源甚至闭源的工具,它的优势也是在各个功能节点自由的选择最适合的,所以困难的地方就是将部件粘合在一起。

上次编辑于: 2024年5月11日 00:01