1. 项目概述
OpsAgent 是一个基于 LLM (Large Language Model) 的 Kubernetes 集群管理工具,它通过 AI 能力来简化和增强 Kubernetes 的操作和管理。该项目旨在帮助用户更容易地进行集群诊断、安全审计、资源分析和清单生成等操作。
2. 技术栈
2.1 核心技术
- 编程语言: Go (主要), Python (部分功能支持)
- AI 模型: 兼容OpenAI API (支持Qwen、deepseek、GPT-4o...)
- 容器技术: Docker
- 云原生: Kubernetes
2.2 主要依赖
- CLI 框架: Cobra
- Kubernetes Client: client-go
- AI 集成: go-openai
- 其他工具:
- Trivy (容器安全扫描)
- kubectl (Kubernetes 命令行工具)
- Google Custom Search API (网络搜索集成)
3. 核心功能模块
3.1 分析模块
- 分析 Kubernetes 资源的潜在问题
- 提供人类可读的分析报告和解决方案
- 支持多种资源类型分析
3.2 审计模块
- 执行 Pod 安全审计
- 检查配置错误
- 扫描容器镜像漏洞
- 生成安全报告
3.3 诊断模块 (diagnose)
- Pod 问题诊断
- 提供详细的诊断报告
- 推荐解决方案
3.4 生成模块
- 基于提示生成 Kubernetes 清单
- 支持清单验证
- 提供应用确认机制
3.5 执行模块
- 基于自然语言指令执行操作
- 支持多种 Kubernetes 操作
- 提供操作确认机制
4. 技术特点
4.1 AI 集成
- 支持多种 LLM 提供商:
- OpenAI API
- Qwen
- deepseek
- 其他 OpenAI 兼容的 LLM
- AP key自管理
- 自适应提示工程
4.2 安全特性
- 支持 kubeconfig 配置
- 集群内外部署支持
- 操作确认机制
- 容器安全扫描
4.3 扩展性
- 模块化设计
- 工具插件系统
- 支持自定义插件/命令
5. 应用场景
5.1 DevOps 场景
- 快速问题诊断
- 自动化配置生成
- 安全合规检查
- 资源优化建议
5.2 安全运维
- 定期安全审计
- 漏洞扫描
- 配置审查
- 安全建议
5.3 开发测试
- 快速生成测试配置
- 环境问题诊断
- 配置验证
6. 项目特色
6.1 智能化
- 自然语言交互
- 智能问题分析
- 自动化建议生成
6.2 易用性
- 清晰的命令行界面
- 人类可读的输出
- 详细的操作指导
6.3 可靠性
- 错误重试机制
- 验证确认机制
- 详细的日志记录
7. 部署方式
7.1 本地部署
- Go 工具链安装
- 依赖工具配置
- 环境变量设置
7.2 容器部署
- Docker 镜像构建
- Kubernetes 部署
- 配置映射
9. 未来展望
9.1 潜在改进
- 支持更多 AI 模型
- 增强安全特性
- 改进用户体验
- 扩展工具集成
9.2 发展方向
- 云原生集成
- 多集群支持
- 智能运维
- 自动化运维
10. CI/CD 流程
10.1 自动化工作流
测试工作流 (Test)
- 触发条件: PR 提交或 master 分支推送
- 功能:
- 使用最新版本 Go 环境
- 运行所有测试用例
- 确保代码质量
构建工作流 (Build)
- 触发条件: master/main 分支推送或手动触发
- 功能:
- 构建 Docker 镜像
- 推送到 GitHub Container Registry (GHCR)
- 自动标记版本号
- 维护 latest 和 py 标签
10.2 依赖管理
使用 Dependabot 进行依赖版本更新:
- 每日检查 Go 模块依赖更新
- 每日检查 GitHub Actions 依赖更新
- 自动创建 PR 进行依赖升级
- 限制最大同时开启的 PR 数量为 5
10.3 镜像仓库
项目使用 GitHub Container Registry (ghcr.io) 存储 Docker 镜像:
- 版本化标签:
ghcr.io/[owner]/OpsAgent:[version]
- 最新版本:
ghcr.io/[owner]/OpsAgent:latest
- Python 版本:
ghcr.io/[owner]/OpsAgent:py
ToDo list
- 在调用gpt api前应该有一个dry-run的参数来确定prompt是否合适。避免token消耗过多
- prompt 可以从外部输入不一定要预制定。例如日志和监控作为prompt 来分析异常
- 前端可以选择加载不同模型,类似于cherry studio
8. 最佳实践
8.3 安全注意事项
⚠️ 重要安全提醒
当前版本在传递给 LLM 的信息中可能包含敏感信息。请注意以下安全实践:
- 使用最小权限的 kubeconfig
- 生产环境建议使用只读权限
- 配置专门的服务账号
- 限制命名空间访问范围
使用示例
基本命令
./ops-agent --model chatgpt-4o --verbose execute '查询集群ems-eu namespace的pod的内存和cpu limit值,以csv格式输出。表头包含pod名称、cpu、内存'
支持的模型
- qwen系列
- chatgpt-4o-latest
- deepseek-r1
- qwen-plus
调试模式
--model gpt-4o --verbose execute 'how many namespace in the cluster?'