基于生产的真实需要,最近对 https://github.com/shaowenchen/ops 又进行了几个重要的更新,同时发布了 v1.0.0 版本。这里主要介绍一下这个版本的主要特性。
1. 多集群执行任务的支持
在实践中,建议:
- 将当前集群的主机创建为 Host
- 可以创建多个 Cluster,拥有的 Cluster 对象即为纳管的集群
Task、Pipeline 对象会自动同步到集群下的全部 Cluster 集群中,无需人工触发。
当下发一个流水线任务时,需要创建一个 PipelineRun 对象。PipelineRun 是可以跨集群的,而 TaskRun 不行。
Controller 会根据 PipelineRun 中设置的 cluster 字段,将 PipelineRun 分发到指定的集群中,由集群内的 Controller 执行具体的任务,再将 PipelineRun 的状态更新到主集群内的 PipelineRun 对象中。
2. 支持页面端的 Copilot 交互
- 在 Ops Server 添加必要的变量
|
|
其中 COPILOT_ENDPOINT、COPILOT_KEY 配置与 OpenAI API 兼容的推理接口; COPILOT_OPSSERVER、COPILOT_OPSTOKEN 是 Ops Server 的地址和 Token。
- 使用 Copilot
直接输入文本,发送相关消息即可。
3. 支持 ARM 环境
所有的核心组件,都已经支持 ARM64 架构,已经在生产的 ARM 环境中验证,包括:
- OpsCli
- OpsController
- OpsServer
在适配 ARM 环境的过程中,我也同步、制作了很多的多架构镜像到 Aliyun 的 ACR 仓库中。
4. 运维总线
建议在每个集群中安装一个 Nats 组件,通过边缘集群的模式,可以将全部的事件汇总到一个集群,或者若干个网络分区的集群。
在事件中,主要定义了以下 Topic:
- 探活类,每个主机、集群会有定时检测,能够看到探活的事件
- 执行任务类,执行 TaskRun、PipelineRun 任务的事件
- 巡检类,TaskRun 执行定时任务巡检任务时,会推送相关的检测事件
- Webhook类,用户自定义的一些运维事件,告警、通知等
通过运维总线,可以非常方便地进行系统集成。
5. 未来规划
- 继续将 Ops Copilot 往 Ops Agent 方向演进
- UI 增强,支持更多的交互