在过去的一年中,Weaveworks团队逐步改进了有关“GitOps”实践的想法。“GitOps”是指他们通过开发者工具来推动运营和实现持续交付。
GitOps是通过使用Git分布式版本控制系统(DVCS)作为声明性基础设施和应用程序的单一事实来源来实现的。团队中的每个开发人员都可以向Git存储库发出拉取请求,在合并请求时,“diff and sync”工具将检测系统的预期状态和实际状态之间的差异,然后触发工具对基础设施进行更新和同步,使其达到预期状态。
Weaveworks的创始人兼首席执行官Alexis Richardson和Weaveworks的社区工程师Ilya Dmitrichenko在他们的公司博客上撰写了一系列文章,解释了GitOps的概念。在进行GitOps实践时,一旦有变更被提交到Git,自动构建/交付管道就会使用“拉模型”来检测和发布对基础设施做出的变更。GitOps实践并不强制使用特定的工具或产品,它只需要所选工具提供的某些功能(例如“diff and sync”)。
Weaveworks团队声称,GitOps可以帮助开发团队提高效率并提高系统的可靠性。他们讨论了如何在团队内部实现GitOps来帮助交付他们的产品,以及如何通过他们的Weave CloudSaaS产品为这种方法提供构建模块。Weave Cloud提供“容器和微服务的部署、监控和管理”,并支持Git集群同步。
目前,Weaveworks使用容器和Kubernetes进行部署来实现GitOps,包括:
“拥抱GitOps理念和最佳实践”就是通过比较和管理基础设施和应用程序的当前状态,让团队可以使用Git日志中的完整审计路径进行测试、部署和回滚。与旧技术相比,现代平台组件让这种方法更加可行,例如,Kubernetes几乎完全可以通过声明性配置进行管理,并且容器可以相对容易地变为不可变的。
例如,在Weave Cloud SaaS平台上,一个用于在应用程序中创建或更新新功能的典型开发者工作流程是这样的:
GitOps管道示例(图像来自Weaveworks博客)
Weaveworks团队表示,GitOps是一种“面向发布的模型”,用于实现和管理运营和功能。通过增加良好的可观察性实践和工具,完成假设驱动开发的反馈循环,团队为客户提供新功能的速度将部分取决于他们在OODA循环中经历各个阶段的速度:
GitOps SDLC,受OODA循环的启发(图片来自Weaveworks博客)
对于有兴趣了解GitOps的读者,可以阅读Weavework网站上的一系列博客。第一篇文章解释了“拉取请求运营”模型,并提供了该概念的动机和高级概述。第二篇文章讨论了GitOps交付管道的核心阶段。本系列的第三部分探讨了可观察性在这种实践中的作用。来自软件交付社区的反应相当鼓舞人心,包括Kelsey Hightower在内的行业杰出人士对这种方法给予了积极的评价。
还有一篇独立文章探讨了GitOps与“CIOps”的关系,并认为使用CI工具可能不是协调持续交付软件部署的最佳方法。并不是每个人都对这篇文章中选择的术语感到满意,例如,Conflux Digital咨询主管Matthew Skelton认为,“CIOps”一词可能会导致一些工程师得出错误的结论,即GitOps在某种程度上是CI的替代方案。
有关GitOps的更多信息,请访问Weaveworks博客。
查看英文原文:"GitOps": Weaveworks Explain Their Model for Using Developer Tooling to Implement CI/CD
领取专属 10元无门槛券
私享最新 技术干货