前言
说到 GitOps 和 ChatOps ,那就不得不谈到 DevOps 。 DevOps 作为一种文化,旨在促进开发、测试和运维人员之间的沟通与协作。而促进合作的方式,往往是使用一系列工具,完成这三个角色的相互协作。这带来的好处也是显而易见的:更快的交付速度和更低的人力成本。获益于 DevOps 和公有云,一个近百人的研发团队,可以只配备一到两个专职运维人员,降低的成本不言而喻。既然 DevOps 是一种文化,那么在不同的团队则会有不同的实践,而无论实践如何,其最终目的都是一样的:最大化的实现自动化,释放更多的人力资源,创建更大价值。
而 GitOps 和 ChatOps ,则是 DevOps 的两种实践。这两种实践分别通过使用 版本控制软件 Git 和实时聊天软件来达到提升交付速度和研发效率的目的。
GitOps
GitOps 是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基础架构和应用程序存放在 Git 的版本控制库中。
将 Git 作为交付流水线的核心,每个开发人员都可以提交拉取请求(Pull Request)并使用 Git 来加速和简化 Kubernetes 的应用程序部署和运维任务。通过使用像 Git 这样的简单熟悉工具,开发人员可以更高效地将注意力集中在创建新功能而不是运维相关任务上。
通过应用 GitOps ,应用系统的基础架构和应用程序代码可以快速查找来源——基础架构和应用程序代码都存放在 gitlab 、或者 github 等版本控制系统上。这使开发团队可以提高开发和部署速度并提高应用系统可靠性。
将 GitOps 应用在持续交付流水线上,有诸多优势和特点:
安全的云原生 CI/CD 管道模型
更快的平均部署时间和平均恢复时间
稳定且可重现的回滚(例如,根据Git恢复/回滚/ fork)
与监控和可视化工具相结合,对已经部署的应用进行全方位的监控
在我看来 GitOps 的最大优势就是通过完善的 git 分支管理来达到管理所有 CI/CD 管道流水线的目的,不同的环境可以对应不同分支,在该环境出现问题时候,可以直接查找对应分支代码,达到快速排查问题的目的。而对于 Git 的熟悉,更是省去学习使用一般 DevOps 工具所需的学习成本和配置时间,开发人员可以无任何培训直接上手使用,进一步降低了时间与人力成本。
ChatOps
ChatOps 以聊天室(聊天群),即实时聊天软件为中心,通过一系列的机器人去对接后台的各种服务,开发&测试&运维人员只需要在聊天窗口中与机器人对话,即可与后台服务进行交互,整个工作的展开就像是使唤一个智能助手那样简单自然。
ChatOps 带来了很多好处:
公开透明。所有的工作消息都在同一个聊天平台中沉淀并公开给所有相关成员,消除沟通壁垒,工作历史有迹可循,团队合作更加顺畅。
上下文共享。减少因工作台切换等对消息的截断,保证消息的完整性,让工作承接有序,各角色,各工具都成为完成工作流中的一环,打造真正流畅的工作体验。
移动友好。只需要在前台与预设好的机器人对话即可完成与后台工具、系统的交互,在移动环境下无需再与众多复杂的工具直接对接,大大提升移动办公的可行性。
DevOps 文化打造。用与机器人对话这种简单的方式降低 DevOps 的接受门槛,让这种自动化办公的理念更容易的扩展到团队的每一个角落。
使用 Drone 实现 GitOps
DevOps 文化早已在我司落地,这也是为什么我们有将近百人的研发团队,却只有两个专职运维的原因。CI/CD 方面我们之前使用的是 jenkins , jenkins 是一个十分强大的工具,但是随着公司的发展,项目也越来越多,粗略统计了一下我们在 jenkins 中有几百个 Job ,虽然所有项目都使用 Jenkinsfile 的方式将 pipeline 持久化到了 gitlab 中,但是所有的 Job 配置,包括参数化构建配置,SCM 配置等都是保存在 jenkins 上,一旦有失,几百个 Job ...哭都没有地方哭去(别问我是怎么知道的)。
小助手机器人的诞生,极大的提高了咨询类工作的效率,同时也释放了运维人员的工作时间,运维人员可以将更多精力投注到更有技术含量的事情上。
原文地址:https://my.oschina.net/keking/blog/3076397