博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GitOps:Weaveworks通过开发者工具实现CI/CD
阅读量:6233 次
发布时间:2019-06-21

本文共 2129 字,大约阅读时间需要 7 分钟。

在过去的一年中,Weaveworks团队逐步改进了有关“”实践的想法。“GitOps”是指他们通过开发者工具来推动运营和实现持续交付。

\\

GitOps是通过使用Git分布式版本控制系统(DVCS)作为声明性基础设施和应用程序的单一事实来源来实现的。团队中的每个开发人员都可以向Git存储库发出拉取请求,在合并请求时,“diff and sync”工具将检测系统的预期状态和实际状态之间的差异,然后触发工具对基础设施进行更新和同步,使其达到预期状态。

\\

Weaveworks的创始人兼首席执行官Alexis Richardson和Weaveworks的社区工程师Ilya Dmitrichenko在他们的公司博客上撰写了一系列文章,解释了GitOps的概念。在进行GitOps实践时,一旦有变更被提交到Git,自动构建/交付管道就会使用“拉模型”来检测和发布对基础设施做出的变更。GitOps实践并不强制使用特定的工具或产品,它只需要所选工具提供的某些功能(例如“diff and sync”)。

\\

Weaveworks团队声称,GitOps可以帮助开发团队提高效率并提高系统的可靠性。他们讨论了如何在团队内部实现GitOps来帮助交付他们的产品,以及如何通过他们的SaaS产品为这种方法提供构建模块。Weave Cloud提供“容器和微服务的部署、监控和管理”,并。

\\

目前,Weaveworks使用容器和Kubernetes进行部署来实现GitOps,包括:

\\
  • 软件系统中可以被描述为代码的内容都必须存储在Git中:通过使用Git作为事实的来源,可以观察一个集群的变化,并将其与预期的状态进行比较。目标是描述和对所有内容进行版本控制:策略、代码、配置,甚至是。\
  • 不应直接使用Kubernetes CLI工具(kubectl):作为一般规则,使用kubectl直接部署到集群不是一个好习惯。Weaveworks团队认为,很多人通过CI工具来推动部署,但这样做会阻碍他们实现良好的关注点分离,并且“”。\
  • 使用遵循“”的Kubernetes控制器:通过扩展Kubernetes提供的功能以及使用遵循操作员模式的自定义,群集可以被配置成始终与基于Git的“真实来源”保持同步。Weaveworks团队使用“diff”和“sync”工具(如开源的,内部工具“terradiff”和“ansiblediff”,分别用于Terraform和Ansible)对预期状态与实际状态进行对比。\

“拥抱GitOps理念和最佳实践”就是通过比较和管理基础设施和应用程序的当前状态,让团队可以使用Git日志中的完整审计路径进行测试、部署和回滚。与旧技术相比,现代平台组件让这种方法更加可行,例如,Kubernetes几乎完全可以通过声明性配置进行管理,并且容器可以相对容易地的。

\\

例如,在Weave Cloud SaaS平台上,一个用于在应用程序中创建或更新新功能的是这样的:

\\
  1. 工程师在新的Git分支上开发新功能,并在他们准备好提交代码进行评审时发起拉取请求。\\t
  2. 对代码进行评审,添加评论或由同事批准变更。在进行必要的修订之后,批准的拉取请求将被合并到主干或主线分支。\\t
  3. Git合并将触发持续集成(CI)和构建管道,并运行一系列测试。成功完成这些测试后,将构建一个新的容器镜像,并上载到镜像注册表。\\t
  4. Weave Cloud的“Deployment Automator”会监控镜像注册表,一旦发现新映像,就从注册表中拉取它,并更新存储库中包含配置的的相关YAML文件。\\t
  5. Weave Cloud的“Deployment Synchronizer”(安装在群集中)会检测到群集状态“已过期”,并从配置存储库中拉取已发生变更的清单,并将新功能部署到生产环境中。\

54abf00b177990aa8e28f47b227db2bb.jpg

\\

GitOps管道示例(图像来自Weaveworks博客)

\\

Weaveworks团队表示,GitOps是一种“面向发布的模型”,用于实现和管理运营和功能。通过增加良好的可观察性实践和工具,完成的反馈循环,团队为客户提供新功能的速度将部分取决于他们在中经历各个阶段的速度:

\\

d7ef1e825b0ec8b5b0f9b45384f54850.jpg

\\

GitOps SDLC,受OODA循环的启发(图片来自Weaveworks博客)

\\

对于有兴趣了解GitOps的读者,可以阅读Weavework网站上的一系列博客。第一篇文章解释了“”模型,并提供了该概念的动机和高级概述。第二篇文章讨论了的核心阶段。本系列的第三部分探讨了。来自软件交付社区的反应相当鼓舞人心,包括Kelsey Hightower在内的行业杰出人士对这种方法给予了积极的评价。

\\

还有一篇独立文章探讨了,并认为使用CI工具可能不是协调持续交付软件部署的最佳方法。并不是每个人都对这篇文章中选择的术语感到满意,例如,Conflux Digital咨询主管Matthew Skelton认为,“CIOps”一词可能会导致一些工程师,即GitOps在某种程度上是CI的替代方案。

\\

有关的更多信息,请访问Weaveworks博客。

\\

查看英文原文

转载地址:http://ctxna.baihongyu.com/

你可能感兴趣的文章
EBS多语言
查看>>
多线程系列五:并发工具类和并发容器
查看>>
POJ 3077 Rounders
查看>>
springMVC源码分析
查看>>
解决VS2010无法新建项目的问题
查看>>
彻底终结MySQL同步延迟问题
查看>>
cxGrid使用汇总3
查看>>
sqlserver 导入excel数据
查看>>
Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
查看>>
MyEclipse如何配置Struts2源码的框架压缩包
查看>>
数据系列:通过Windows Azure SQL数据库防火墙规则控制数据库访问
查看>>
Windows Azure 社区新闻综述(#72 版)
查看>>
git 删除文件
查看>>
GAN-生成对抗网络原理
查看>>
单片机
查看>>
liveshow回顾
查看>>
yii2中的场景使用
查看>>
AES加密,解密方法
查看>>
NOIP 2014 提高组 Day1
查看>>
bzoj千题计划254:bzoj2286: [Sdoi2011]消耗战
查看>>