作者:郭旭东
审校:罗广明、邱世达
原文链接:https://www.servicemesher.com/blog/gitops-and-chatops/

前言

说到 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

ChatOps 带来了很多好处:

  • 公开透明。所有的工作消息都在同一个聊天平台中沉淀并公开给所有相关成员,消除沟通壁垒,工作历史有迹可循,团队合作更加顺畅。

  • 上下文共享。减少因工作台切换等对消息的截断,保证消息的完整性,让工作承接有序,各角色,各工具都成为完成工作流中的一环,打造真正流畅的工作体验。

  • 移动友好。只需要在前台与预设好的机器人对话即可完成与后台工具、系统的交互,在移动环境下无需再与众多复杂的工具直接对接,大大提升移动办公的可行性。

  • DevOps 文化打造。用与机器人对话这种简单的方式降低 DevOps 的接受门槛,让这种自动化办公的理念更容易的扩展到团队的每一个角落。

对于 ChatOps 的理解最早要源于在 GitHub 上参与开源项目的一些经历,在向 Kubernetes 相关项目提交 PR 时,会有一个名叫 k8s-ci-robot 的小机器人来自动为该 RP 打上标签,并且根据你提交 PR 时的 comment 信息来为你分配 Reviewers,如果没有填的话,则会自动为你分配 Reviewers 等功能。同时可以在 comment 中输入命令,还可以进行其他的操作,详见:命令列表。而其实这个机器人的后端就是名为 Prow 的由 Google 发起的适应云原生 CI/CD 开源项目,有兴趣的话推荐阅读:Prow 快速入门向导。

而一篇名为:《湾区日报是如何运作的?》 文章更是让我坚定信心开始开发自己 ChatOps 系统。该文章介绍作者是怎么运营一个名叫湾区日报的个人博客,这个博客通过11个渠道(网站,iOS app,Android app、微博,微信,Twitter,Chrome 浏览器推送、Facebook、邮件订阅、RSS、Telegram)推荐给读者,而这个11个渠道的发布都是通过 slack 和作者开发的小机器人完成。在我还在为使用脚本可以在多渠道发布个人技术博客而沾沾自喜的时候,人家早在多年前就开始使用 ChatOps 模式向多渠道使用多格式自动推送文章了。这也坚定了我开发我们自己的 ChatOps 系统的决心。

GitOps & ChatOps 的实践

使用 Drone 实现 GitOps

DevOps 文化早已在我司落地,这也是为什么我们有将近百人的研发团队,却只有两个专职运维的原因。CI/CD 方面我们之前使用的是 jenkins , jenkins 是一个十分强大的工具,但是随着公司的发展,项目也越来越多,粗略统计了一下我们在 jenkins 中有几百个 Job ,虽然所有项目都使用 Jenkinsfile 的方式将 pipeline 持久化到了 gitlab 中,但是所有的 Job 配置,包括参数化构建配置,SCM 配置等都是保存在 jenkins 上,一旦有失,几百个 Job …哭都没有地方哭去(别问我是怎么知道的)。

经过调研我们选择了 drone CI 进行 GitOps ,通过自己开发不同功能的插件,完善了我们的整个 CI/CD 流水线。而插件的开发也并不是从头开始,而是直接 fork 现有的插件进行定制化的二次开发。

将项目配置进行了分离,配置使用单独的 git 仓库维护,同时整合了镜像安全扫描,钉钉通知等功能。

image

由于 drone CI 的配置文件 .drone.yml 需要统一规范,所以我们在自己的 DevOps 平台开发了 Drone 配置页面,帮助开发自主配置。我们提供了 JavaNodePython 三种配置模板,并且由于 DevOps 平台已与 GitLab 集成,可以直接将生成的 .drone.yml 文件插入到相应 git 项目中。


同时也提供了钉钉构建通知,在构建成功后会发送到相应的开发群组中,如果需希望自动发布的话,也可点击通知中的连接自行发布。


自研平台配合钉钉 Outgoing 功能实现 ChatOps

前面的构建通知机器人使用的是钉钉的自定义机器人,将构建信息推送到各个项目群中。而钉钉机器人的 Outgoing 功能,则可用来实现 ChatOps 的功能(注意:钉钉的 Outgoing 功能目前还处于灰度测试阶段,想要使用的需要联系官方管理员开启该功能)。

由于我司专职运维人员只有两位,管理着整个团队全部的基础设施。但是随着开发团队的扩张,运维人员每天要处理大量的咨询类工作,而这类工作有着重复性强和技术性弱的特点,对于运维人员的技术水平毫无提升,那么这类工作交给机器人岂不是更好。得益于我们 DevOps 平台完善的 API ,小助手机器人的开发并不困难。

小助手机器人的诞生,极大的提高了咨询类工作的效率,同时也释放了运维人员的工作时间,运维人员可以将更多精力投注到更有技术含量的事情上。


小助手机器人还有运维版本,功能包括:批量操作虚拟机、重启服务、DNS 解析、Kubernetes 信息检测&操作等功能,由于还是测试版本,这里就不做详细介绍了。

结语

上文中简要的介绍了 GitOps 和 ChatOps 在我司的落地实践,从决定落地 GitOps 和 ChatOps 至今不过短短的2个月。得益于我司浓厚的 DevOps 文化氛围,让我可以在极短的时间内将 GitOps 和 ChatOps 落地实践。但毕竟实践的时间还短,很多需求还在收集和调研中,后续的开发还在持续进行。欢迎对 GitOps 和 ChatOps 感兴趣的同学一起交流,共同提升。

参考资料

  1. GitOps

  2. DevOps 理念升级,ChatOps 概述及实践经验

第 6 届 Service Mesh Meetup Topic 征集

Hi ServiceMeshers,让大家久等了,继去年的五届 Service Mesh Meetup 后沉寂了半年,现在 2019 年度的第一场 Service Mesh Meetup 将于 8 月 11 日(星期日)再度登临广州,还是老地方广电平云广场,欢迎报名提交议题(请直接微信联系 jimmysongio),也欢迎大家届时报名参加!


 推荐阅读 

Prow 快速入门向导

Istio 的 GitOps——像代码一样管理 Istio 配置

使用Jenkins X实现ChatOps

Serverless Jenkins 和 Jenkins X

点击 阅读原文 查看更多

GitOps与ChatOps的落地实践相关推荐

  1. GitOps 与 ChatOps 的落地实践

    说到 GitOps 和 ChatOps,那就不得不谈到 DevOps.DevOps 作为一种文化,旨在促进开发.测试和运维人员之间的沟通与协作.而促进合作的方式,往往是使用一系列工具,完成这三个角色的 ...

  2. Serverless Kubernetes 落地实践

    ​作者:元毅 导读 Kubernetes 作为当今云原生业界标准,具备良好的生态以及跨云厂商能力.Kubernetes 很好的抽象了 IaaS 资源交付标准,使得云资源交付变的越来越简单,与此同时用户 ...

  3. 阿里云 Serverless Kubernetes 的落地实践分享

    简介:Serverless Kubernetes 基于 Kubernetes 之上,提供按需使用.节点免运维的 Serverless 能力,让开发者真正实现通过 Kubernetes 标准化 API ...

  4. 《AIOps在360的落地实践》分享实录

    女主宣言 随着运维工作从规模和复杂度多方面的爆炸式增长,传统的运维手段已经无法满足如今系统运维管理的需求.AI技术日趋成熟,智能运维(AIOps)应运而生,给运维行业带来了很多的变革和机会.如何将大数 ...

  5. 复旦肖仰华:领域知识图谱落地实践中的问题与对策

    肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场实验室负责人. 报告摘要:近年来,知识图谱技术进展迅速,各种领域知识图谱技术在很多领域或行业取得了显著落地效果.在领域知识图谱技术的落 ...

  6. 智能语音交互技术在360的落地实践

    作者:龚小春,来自:DataFun 导读:随着语音交互技术的发展,对话系统已经越来越成熟.对话系统的最新进展绝大多数是由深度学习技术所贡献的,深度学习技术可以通过利用大规模数据来学习有意义的特征表示和 ...

  7. 演讲实录 | DevOps五大理念及其落地实践

    5月29日,我在全球软件质量&效能大会QECon2021深圳站上进行了一场名为"DevOps五大理念及其落地实践"的演讲. 相信很多朋友已经看过了我参与翻译的新书<独 ...

  8. HPE谢少毅:更敏捷的企业服务,做有生命力的落地实践

    相比一年前,"瘦身后"的HPE是这届参展商里身份变化最大的一个,这是它第一次以HPE的新品牌亮相数博会,也是第一次以一家专注于企业级服务的公司参展数博会. 在HPE的展台上,我见到 ...

  9. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准...

    python coding style guide 的快速落地实践 机器和人各有所长,如coding style检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现coding st ...

最新文章

  1. 安装WebDriverAgent时,执行bootstrap.sh脚本报错提示:ERROR in ./js/app.js的解决方法
  2. android获取毫秒,Android 日期转为为毫秒,毫秒转化为日期,获取当期日期年、月、日...
  3. Hybris Commerce里的持久层
  4. DataForm 中通过外面的按钮进行提交时,出错
  5. Anime4K:目前最热的开源实时动漫放大算法,Github上一周收获2600星!
  6. 装13失败后,我决定使用Python为生僻字批量注音
  7. php webwxuploadmedia_PHP Web实现文件上传下载功能实例解析
  8. Linux两个网卡mac地址重复,ARP响应Linux服务器上的单个MAC地址,同一网络上有多个接口...
  9. 为什么单击用户账户没有反应_win10用户获取最高权限的方法
  10. Entity Framework6使用SQL Server Compact免安装部署
  11. 内网渗透之信息收集(更新中)
  12. lvgl chart
  13. A FastDetectionMethodviaRegion-BasedFullyConvolutionalNeuralNetworksforShieldTunnelLiningDefects-笔记
  14. 参数估计与假设检验—拒绝域的数学证明(手写)
  15. 你只跟你自己同在一条船上
  16. 给图片加水印的几种方法
  17. 解决问题:Oracle存储过程执行成功,但数据没有变化
  18. RFM模型(用户分析)
  19. ajax和flash,flask ajax请求后flash方法(消息闪现)无效问题的解决方法
  20. 记一个微商城促销方案实现流程图

热门文章

  1. Antd-Upload组件设置fileList属性时onChnage只执行到“uploading“状态引发的一些问题的解决方案
  2. 用微信小程序做H5游戏尝试
  3. Java创建对象过程:类的初始化和实例化
  4. IIS的ARR搭建本地服务器的不停机更新(负载均衡,分布式服务器,集群)
  5. 万向集团要在区块链上构建智慧城市,这将如何实现?
  6. AP系列文章——PDM麦克风
  7. 最新人工智能、大数据与复杂系统一月特训班_机器学习入门到精通
  8. WEB 应用中的整体结构和层次关系
  9. ArcGIS地质图矢量化技巧概要
  10. 为简化品牌形象,京东将域名360buy.com重命名为jd.com