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