两步开启研发团队专属ChatOps|极狐GitLab ChatOps 的设计与实践

news2024/11/25 20:53:37

本文来自:

彭亮 极狐(GitLab) 高级产品经理

郭旭东 极狐(GitLab) 资深创新架构师

舒文斌 极狐(GitLab) 高级网站可靠性工程师

最近几天,ChatGPT 真是杀疯了 !

相信大家的朋友圈,已经被调戏、询问或探讨 ChatGPT 的贴子刷屏。

看到这个上知天文、下知地理,博古通今、学贯中西,不管什么问题都能告诉我们答案的 “杀手级应用”,不禁想问:“这么好玩东西不会只拿来玩吧,能不能帮我分担一些工作?”

虽然ChatGPT还没答应,但另一个不吃不喝不摸鱼的 “智能” 员工——ChatOps,已经在上班了。

什么是 ChatOps?


顾名思义,ChatOps 就是 Chat + Ops 的组合词,是使用即时通讯软件客户端、聊天机器人和实时通信工具,来促进软件开发和操作任务的通信和执行方式。ChatOps 往往也被认为是对话驱动的 DevOps。

在 ChatOps 中,所有任务都是由对话驱动,团队成员只需在聊天软件中键入相应的命令或包含相应关键字的内容,聊天机器人就会自动调用相关内容的平台,从而自动完成各种任务

而这些任务的范围,从代码部署到安全事件响应,从团队成员通知到任务进度查询。理论上,ChatOps 可以继承 DevOps 大多数工具与优点,进一步提升团队自动化水平。

技术架构

一般来讲,ChatOps 由三部分组成:即时通讯软件客户端(也就是聊天 APP)、连接中心(机器人)、基础设施应用。

聊天 APP

ChatOps 主要动作,就是将之前 DevOps 中通过 Web 页面进行的操作,通过聊天机器人来代替。也就是说,聊天 APP 成为用户进行操作的一个客户端,用户的任何操作,都可以通过聊天 APP 来实现。

这也为聊天 APP 提出了要求,它需要将用户的输入发送给响应与连接中心,也就是我们常说的聊天机器人,这样机器人才能进行后续的自动化操作。所以聊天 APP 需要支持像 slash commands 或 outgoing 这样的机制,允许用户将自己在聊天框中输入的内容发送向第三方平台。

连接中心

一般情况下,大家都喜欢叫这部分为机器人或聊天机器人,但这个表述并不精确,经常会造成误解,所以这里将其描述为连接中心。

它的工作就是接收聊天 APP 发送来的消息,识别处理消息内容,根据识别内容调用基础设施中的应用,等待基础设施应用完成任务,并返回通知(可选)。

可以看出这部分的主要作用,就是接受识别请求并连接基础设施应用,只有在识别请求处接入自然语言识别系统,其能力才更贴近机器人。

基础设施应用

这部分与 DevOps 系统与各个基础设施应用的连接方式相同,如果已有则可以直接复用,需要注意的是,基础设施应用不同版本的 API 可能有所差异,需要谨慎维护这部分代码。

ChatOps 给我们带来什么价值?


ChatOps 在 DevOps 的基础上,进一步降低了使用门槛,一些常见的 DevOps 场景,均可以借助 ChatOps 来大大提升使用便利性与用户体验。

信息透明化,提升协作效率

信息通知是目前 ChatOps 最常见场景,目前主流的即时通讯办公软件,如:Slack、钉钉、飞书均内置了极狐 GitLab 消息通知,只需简单配置,就可以将代码提交、issue 变更、MR 合并等消息,实时同步到聊天群内,一个操作能被团队所有人看到,提升沟通效率

不仅是极狐 GitLab,很多应用都内置了 Webhook 功能,所有事件都可以通过 Webhook 推送到办公聊天软件,实现实时通知。

公开透明协作,提升工作体验

相信很多人都经历过「弄清某个特定命令是否同时执行」的痛苦。

在 ChatOps 中,所有的命令均在群内执行,向所有群成员公开,每个人的操作、通知和信息均在聊天群内展现,所有的任务都置于前台。上下文一目了然,减少了因工作台切换导致消息被截断,承接有序,打造流畅的工作体验

快速上手,提升工作质量

将过去手动完成的任务通过 ChatOps 自动完成,不但可以提升工作效率,降低重复劳动,还可以减少手动操作可能导致的失误。另外,新同学进入团队,能够通过观察老司机的工作方式,迅速上手,赋能团队提升工作质量。

极狐GitLab ChatOps 功能与实践


极狐GitLab 已和国内外众多主流 IM 产品进行集成,从而实现 ChatOps。

如飞书、钉钉、Slack、Mattermost、Discord、Google Chat、Microsoft Teams、Webex Teams。其中和飞书、钉钉的集成是极狐专享功能,已在极狐GitLab 15.1 旗舰版本正式对外发布。

在极狐GitLab SRE 团队如何落地实践 ChatOps?

需求

极狐(GitLab) SRE 团队的日常工作大部分都实现了代码化,并分布在各个项目。

例如,服务器配置管理放在 ansible playbooks 项目里,K8S 部分部署放在了 helm chart 项目中,还有一系列基于目标系统 api 的操作需求。

SRE 团队希望基于 ChatOps,可以进一步降低这些自动化资产使用的复杂度,使团队成员都可以轻松上手琐碎的运维工作,实现操作与操作人解耦;同时,包装好的命令也可以在程序上对操作者的行为做出一定限制,避免操作者直接接触环境,提高操作安全性。

设计与实现

为此,极狐(GitLab) SRE 创建了 ChatOps(名为chatops-go)项目,该项目直接与 Slack 的 slash command 绑定,作为运维统一入口。

1. 多项目下的 ChatOps 命令模式

由于 SRE 运维脚本分布在各个项目中,我们将 ChatOps 的命令类型分成这三种模式:

  • 直接执行:针对一些快速的、简单的 API 操作,执行动作直接在 ChatOps 项目中完成。

  • 触发下游并等待:ChatOps 的 job 不会直接执行操作任务,而是触发下游项目流水线,并等待下游流水线的返回结果。这个场景适用于,对应的系统需要较为复杂的维护脚本(如ansible palybook),且这些脚本在其他项目中。

  • 触发下游并直接返回:仍然通过 ChatOps 触发下游项目流水线,但是触发成功后不等待下游流水线执行完成,而是直接返回流水线的链接地址。这个场景适用于,要触发的任务耗时较长,如环境升级等。

2. 权限控制

在 ChatOps 中,我们往往需要比常规的流水线控制,更细粒度的权限划分。如小 A 作为 SRE 可以调整负载均衡的流量配比,小 B 作为开发可以查看当前环境下某个功能开关的的开启状态等。

极狐 GitLab 在这方面支持很好的扩展。在 ChatOps 触发的流水线作业中,我们可以通过一些CI预定义的变量,在权限上做一些「手脚」:

  • CHAT_INPUT:用户通过 ChatOps 传入的额外参数;

  • CI_JOB_NAME:用户通过 ChatOps 执行的命令名称;

  • CHAT_CHANNEL:用户执行 ChatOps 命令时所在的Slack channel;

  • GITLAB_USER_LOGIN:执行 ChatOps 命令的用户在极狐GitLab 中绑定的用户名。

通过这些变量,ChatOps 程序可以很好的回答这些问题:是谁在执行?在哪执行?执行了什么命令?传入了那些参数?

得到这些问题的答案后,接下来,就是 ChatOps 项目做权限判断的时候了。

使用场景

以下就是极狐(GitLab) SRE 团队的 ChatOps 日常使用场景:

1. 开启极狐GitLab SaaS的功能开关

这是一个直接执行的命令模式。直接通过 ChatOps CI 中的程序与极狐GitLab SaaS 的功能开关做交互,实现功能开关管理。

使用示例:

2. 管理负载均衡的流量比

极狐GitLab  SRE 的大量服务器配置管理工作依赖于 Ansible playbook 项目,因此此类工作不会直接在ChatOps 自动完成。这个命令采用的是「触发下游并等待」的模式,命令传入到 ChatOps 项目后,触发Ansible playbook项目流水线,实现对负载均衡器管理。

使用示例如下:

3. 管理Helm Chart部署

K8S 上的负载通过 helmfile + hem chart 管理,因此也不会直接在 ChatOps 项目中执行。出于部署时长和安全性的考虑,ChatOps 只会直接返回部署流水线的 URL,并且使用者需要在该流水线中点击手动作业才会执行。

使用示例如下:

以上,就是 ChatOps 的定义、价值与最佳实践

在 ChatOps 能力加成下,极狐GitLab 能够帮助企业研发团队大幅提升工作效率与工作体验,已获得众多客户认可。

虽然现在的 ChatOps 相较于 ChatGPT,还过于稚嫩。但我们相信在不远的未来,ChatOps 一定会成长为研发团队更智能和贴心的伙伴。ChatOps 下一步如何发展?让我们拭目以待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虹科案例 | 风电机组的预测性维护应该如何进行?

虹科预测性维护方案 在风能领域的应用 虹科案例 01 应用背景 风能是最重要的清洁能源之一,大力发展风电等清洁能源是实现国家可持续发展战略的必然选择。发展风电、光伏等新能源的高效运维技术已成为当前电力系统面临的重要问题之一。在风电机组单机容量较大、机组…

在Azure上设置存储账户

目录 (一)前言 (二)正文 1. 搜索存储账户类型资源 2. 开始创建新存储账户 (1)基本信息 (2)高级选项 (3)网络配置 (4)数据保护…

怎么看电脑是32位还是64位?2个方法,快速查看

熟悉计算机操作系统的朋友应该知道,电脑系统分为32位和64位。不同系统位数的兼容软件也会有所不同。怎么看电脑是32位还是64位?这里小编分享2个方法,快速查看自己的电脑系统位数。 方法一:电脑属性查看法 很多小伙伴不知道怎么看…

特殊符号——双引号和单引号

特殊符号——双引号和单引号一.通常理解二.一般使用三.特殊使用四.为何计算机需要字符一.通常理解 在c语言中,我们通常认为双引号保存的是字符串,单引号里保存的是字符。这里也没什么好说的,说一说它们的细微的一些地方 二.一般使用 接下来我…

图为科技与深圳人工智能产业协会联合发布边缘计算机概念

2022年12月13日由图为信息科技(深圳)有限公司联合深圳市人工智能产业协会举办的“边缘计算机发布会”在深圳市龙岗区大运AI小镇举行。 随着5G、物联网、人工智能等技术的规模应用和持续进步,边缘计算市场进入蓬勃发展期。我国在《…

罗克韦尔(AB)PLC远程维护连接不上网关怎么办?

对很多使用罗克韦尔(AB)PLC的工厂来说,PLC具备成熟系统和稳定性能等特点,可以适应厂内设备的控制指令,需要细心保养,认真维护。随着无线通信技术和物联网技术的发展,PLC的数据上云进行云端监控和…

过两年 JVM 可能就要被它替代了

今天说一说 GraalVM。 GraalVM 是 Oracle 大力发展和想要推广的新一代 JVM ,目前很多框架都已经渐渐支持 GraalVM 了,比如我们在用的 Spring 也已经推出了对 GraalVM 兼容的工具包了。 既然说的这么厉害,那么它到底是何方神圣呢。 GraalVM…

java零基础入门-Scanner类

目录 1.概念 2.常用api 3.next()方法 4.nextLine()方法 5.next()与nextLine()区别 6.实例 1.概念 针对java5版本诞生,在jdk之前版本这次的版本是添加了java.util.Scanner类;其类是一个用于扫描输入文本的工具集。它不仅提供了可结合正则表达式和从输…

基于云原生的集群自愈系统 Flink Cluster Inspector

作者: 舟柒、楼台 1. 业务背景与挑战 1.1 实时计算集群现状 关于热点机器处理一直是阿里云 Flink 集群运维的一大痛点,不管在日常还是大促都已经是比较严重的问题,同时这也是分布式系统的老大难问题。而在今年整个阿里云成本控制的背景下,…

Flink 1.16:Hive SQL 如何平迁到 Flink SQL

摘要:本文整理自 Apache Flink PMC&Committer 伍翀(云邪)在 9 月 24 日 Apache Flink Meetup 的演讲。主要内容包括:Hive SQL 迁移的动机Hive SQL 迁移的挑战Hive SQL 迁移的实践Hive SQL 迁移的演示未来规划Tips:…

班级网页制作 HTML个人网页设计 我的班级网站设计与实现 大学生简单班级静态HTML网页设计作品 DIV布局班级网页模板代码 DW学生校园网站制作成品下载

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【数据库数据恢复】SQL server数据库被加密怎么恢复数据?

SQL server数据库故障: SQL server数据库和备份文件被加密,无法使用。数据库MDF、LDF、log日志文件名字被修改。 SQL server数据库数据恢复过程: 1、首先对故障数据库所涉及到的硬盘进行镜像备份,避免对原始数据造成二次破坏&…

python大作业高分项目--射击闯关游戏

项目功能: 地图编辑器:可以实现玩家自己定义每一关卡的样式和难易程度 运行界面:实现了玩家的移动,跳跃,发射子弹,投掷手雷,以及敌人的AL(移动,发射子弹,扔…

Word处理控件Aspose.Words功能演示:在 Python 中将 HTML 转换为 PNG、JPEG、BMP、GIF 或 TIFF 图像

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。 HTML (超文本标记语言)是所有浏览器都支持的主要网页文件格式。它经常用于将数据和信息显示为网页。在某些情况下,我们…

迎接工业互联网的龙卷风暴,软通动力绘制了一张转型地图

《绿野仙踪》一书的开始,主角多萝西被一股龙卷风卷起来,从此离开了平凡无奇的堪萨斯州,来到神奇的奥兹国。这种让人一步登天、进入仙境的“龙卷风暴”,也在科技行业不停上演。在微型计算机和个人电脑PC这两场大型龙卷风市场中&…

cdr最新软件下载2023中文版电脑64位免费安装包

CorelDRAW Graphics Suite2023涵盖了全部CorelDRAW图形处理组件,是一款智能高效的平面设计软件,广泛应用于排版印刷、矢量图形编辑及网页设计等领域,30多年来无数优秀的设计师通过CorelDRAW大胆展现真我,交付了出众的创意作品&…

web前端期末大作业——仿小米商城电商平台(6页) html+css+javascript网页设计实例 企业网站制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

【面试】RabbitMQ面试题答案整理

1、RabbitMQ routing路由模式 1、 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息; 2、 根据业务功能定义路由字符串 3、 从系统的…

关于IPv6升级改造的政策文件汇总-中科三方

一、《推进互联网协议第六版(IPv6)规模部署行动计划》 发布时间:2017年11月 发文单位:中共中央办公厅、国务院办公厅 主要内容:用5到10年时间,形成下一代互联网自主技术体系和产业生态,建成全…

Matlab论文插图绘制模板第70期—带误差棒的柱状图(Bar with Errorbar)

在之前的文章中,分享了一系列Matlab柱状图的绘制模板: 这一次,再来分享一种特殊的柱状图:带误差棒的柱状图。 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matl…