Please enable Javascript to view the contents

Ops 新增 Server 及 UI 服务

 ·  ☕ 2 分钟

1. 什么是 Ops 项目

我在之前的文章中介绍过一个常用的 Ops 工具。

Ops 的设计理念在于,运维工具的核心在于文本分发和脚本执行,实现了这两种能力就能够满足运维的功能诉求。

目前我主要的运维对象是 Host 主机、Kubernetes 集群,因此在 OpsObject 层实现了 Host 和 Cluster 对象,分别对应主机和 Kubernetes 集群。

在此之上,分别实现了面向主机的文件分发、脚本执行,以及面向 Kubernetes 集群的文件分发、脚本执行,也就是 Core 核心能力层。

得益于 Core 层的能力,我已经可以实现一些简单的运维功能,比如:批量添加 hosts,批量安装、变更 Prometheus 等。

2. Ops Server 和 UI 功能

在上面的架构中,我提供了三个入口,:opscli、opsserver、opscontroller。

由于之前工作需求已经完成了 opscli、opscontroller 两个组件,近期补齐了 opsserver 项目的部分功能和一个简单的 UI 界面。通过 helm charts 的方式,已经可以直接安装,详情参考 https://www.chenshaowen.com/ops/

下面是一些功能截图:

  • 查看托管的主机列表

Ops 会自动从主机上定时同步信息,比如: 主机名、CPU、内存、磁盘、系统信息等。

  • 查看托管的集群

Ops 会自动从集群上定时同步信息,比如: 版本、节点数量、Pod 的状态、证书过期时间等。

  • 查看 Task 对象

Task 是我定位的复用级对象,能够沉淀并共享运维能力,实现标准化操作。

通过 Task 指定具体的主机或者集群,设置变量值,创建 TaskRun 对象就能够实现运维任务的执行。另外,Task 也支持定时执行。

  • 查看 TaskRun 对象

TaskRun 对象包含了任务的基本信息,包括: 任务名称、具体操作、执行结果等。

3. 下一步

目前 Server 端的迭代主要依赖于 Copilot 项目的诉求。

LLM 擅长分析并回答问题,得到一个解决方案或者一系列的 Command,但 LLM 并不能直接执行这些 Command。如上图,Ops Server 接下来的迭代的目标就是对接好 LLM ,让 LLM 能够读懂 Ops Server 的设计意图,在输出 Command 之后,能够直接转换为具有真实影响的 Action,让 LLM 具备真正的运维能力。

这种设计的意义在于:

  • 不必在本地执行命令、配置凭证
  • 支持批量的主机、集群操作
  • 远程执行环境约束力更强,更加安全可审计
  • 远端能够配置实现一些更加灵活、复杂的操作

简单点理解就是 Ops Server 会提供一种远端的运维能力,通过 API 对接到 LLM 应用中实现运维的自动化。


微信公众号
作者
微信公众号