项目简介
OpenShift/Kubernetes MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将OpenShift/Kubernetes集群的实时洞察能力、管理功能和性能测试能力通过标准化的接口暴露给大型语言模型(LLM)客户端。通过此服务器,用户可以利用自然语言对集群进行健康检查、资源管理、应用部署及性能基准测试。
主要功能点
- 核心监控与诊断: 检查集群整体健康状况、获取节点和Pod性能指标、检测资源分配问题、分析Pod中断和重启模式、监控节点状况和部署状态。此外,还能检查Kubelet和CRI-O运行时状态,并分析'journalctl'日志以识别系统和Pod相关的错误。
- 部署与配置管理: 创建带有服务质量(QoS)保证的应用部署、部署多种数据库服务(如PostgreSQL, MySQL, MongoDB, Redis)、设置水平Pod自动伸缩器(HPA)、创建和配置服务、以及定义网络策略以增强安全性。
- 性能测试与基准测试: 执行Kube-burner密度测试以衡量应用部署性能、FIO存储性能测试、iperf3网络吞吐量和延迟测试、CPU/内存压力测试、以及Sysbench或Pgbench数据库基准测试。
- 远程执行能力: 支持通过堡垒机访问私有集群,允许LLM客户端跨不同OpenShift环境执行远程命令和自动化性能测试。
安装步骤
-
准备环境:
- 确保您的系统已安装 Node.js 18+。
- 您需要一个OpenShift/Kubernetes集群的访问权限,通过有效的'kubeconfig'文件(通常在'~/.kube/config')或集群内配置。
- 如果需要通过堡垒机访问私有集群,请确保对堡垒机有SSH访问权限。
-
本地安装(直接访问集群): 打开您的终端,导航到仓库目录,然后运行以下命令安装依赖:
npm install -
远程安装(通过堡垒机访问私有集群): 如果您的MCP服务器需要通过堡垒机连接到私有OpenShift/Kubernetes集群,请按照以下步骤设置:
- 步骤一:认证设置
- SSH密钥认证 (推荐):
- 如果您没有SSH密钥对,请生成一个:'ssh-keygen -t ed25519 -f ~/.ssh/id_rsa_bastion -C "mcp-server-access"'
- 将您的公钥复制到堡垒机上:'ssh-copy-id -i ~/.ssh/id_rsa_bastion.pub [email protected]'
- 测试SSH连接:'ssh -i ~/.ssh/id_rsa_bastion [email protected]'
- 根据您的设置,配置以下环境变量(或在MCP客户端配置中提供):
- 'MCP_BASTION_HOST="your-bastion-host.com"'
- 'MCP_BASTION_USER="your-username"'
- 'MCP_SSH_KEY="~/.ssh/id_rsa_bastion"' (本地私钥路径)
- 'MCP_REMOTE_PATH="/opt/cursor-kube-mcp-server"' (MCP服务器在堡垒机上的路径)
- 'MCP_REMOTE_KUBECONFIG="/path/to/remote/kubeconfig"' (远程集群kubeconfig在堡垒机上的路径)
- 密码认证 (可选):
- 安装'sshpass':'sudo apt-get install sshpass' (Ubuntu/Debian) 或 'brew install sshpass' (macOS)
- 配置以下环境变量:
- 'MCP_BASTION_HOST="your-bastion-host.com"'
- 'MCP_BASTION_USER="your-username"'
- 'MCP_BASTION_PASSWORD="your-secure-password"'
- 'MCP_REMOTE_PATH="/opt/cursor-kube-mcp-server"'
- 'MCP_REMOTE_KUBECONFIG="/path/to/remote/kubeconfig"'
- SSH密钥认证 (推荐):
- 步骤二:远程MCP服务器设置
- 运行设置脚本以在堡垒机上准备环境:
您可以使用选项 '-H' (host), '-U' (user), '-P' (password), '-s' (ssh_key) 等来提供参数。./scripts/setup-bastion.sh - 测试远程MCP服务器连接(这将启动一个通过SSH转发stdio的MCP服务器):
node ./scripts/simple-remote-launcher.js
- 运行设置脚本以在堡垒机上准备环境:
- 步骤一:认证设置
服务器配置(供MCP客户端使用)
MCP客户端需要配置MCP服务器的启动命令。以下是两种典型场景的JSON格式配置示例(请将路径和主机名替换为您的实际值):
1. 本地直接访问集群:
{ "mcpServers": { "openshift-mcp-server": { "command": "node", // 用于启动MCP服务器的命令 "args": ["/path/to/openshift-mcp-server/index.js"], // 启动服务器的参数(指向主入口文件) "env": { // 可选:如果您的kubeconfig不在默认路径 (~/.kube/config),请在此处指定 "KUBECONFIG": "/path/to/your/kubeconfig" }, // 可选:指定服务器的工作目录 "cwd": "/path/to/openshift-mcp-server" } } }
2. 通过堡垒机远程访问集群(推荐使用SSH密钥):
{ "mcpServers": { "openshift-mcp-server": { "command": "node", // 用于启动远程启动器的命令 "args": ["/path/to/openshift-mcp-server/simple-remote-launcher.js"], // 启动远程启动器的参数 "env": { // 堡垒机的主机地址,例如:your-bastion-host.com "MCP_BASTION_HOST": "your-bastion-host.com", // 堡垒机的用户名,例如:admin "MCP_BASTION_USER": "admin", // 本地SSH私钥文件的路径,例如:/home/user/.ssh/id_rsa "MCP_SSH_KEY": "/path/to/your/ssh/key", // MCP服务器在堡垒机上的部署路径,例如:/opt/openshift-mcp-server "MCP_REMOTE_PATH": "/opt/openshift-mcp-server", // 远程集群的kubeconfig文件在堡垒机上的路径,例如:/path/to/remote/kubeconfig "MCP_REMOTE_KUBECONFIG": "/path/to/remote/kubeconfig", // 远程Node环境设置,例如:production "MCP_REMOTE_NODE_ENV": "production" }, // 可选:指定启动器的工作目录 "cwd": "/path/to/openshift-mcp-server" } } }
如果您选择密码认证,只需将'MCP_SSH_KEY'替换为'"MCP_BASTION_PASSWORD": "your-secure-password"'。
基本使用方法
配置完成后,您的AI代码助手或其他MCP客户端即可与服务器通信。您可以向AI提问,利用自然语言执行对OpenShift/Kubernetes集群的操作,例如:
- "检查OpenShift集群的整体健康状况,并提供详细报告。"
- "显示生产命名空间中所有部署的状态,包括未就绪的副本数量。"
- "检测集群中是否存在CPU或内存使用过高的Pod,阈值分别设置为85%和90%。"
- "部署一个名为'my-web-app'的Nginx应用,使用3个副本,限制CPU为1核,内存为512MiB。"
- "在测试命名空间中部署一个带有20Gi持久存储的PostgreSQL数据库。"
- "运行一个集群密度测试,创建20个Pod,测试类型为'cluster-density-v2'。"
- "执行一个混合读写的存储性能基准测试,块大小为8k,持续120秒。"
- "测试Pod之间的网络吞吐量,持续60秒,使用TCP协议并行4个流。"
- "对工作节点进行CPU和内存压力测试,使用4核CPU和4GB内存,持续5分钟。"
- "分析过去6小时内,kubelet服务在node01节点上的日志,查找所有错误和警告。"
信息
分类
开发者工具