项目简介

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环境执行远程命令和自动化性能测试。

安装步骤

  1. 准备环境:

    • 确保您的系统已安装 Node.js 18+。
    • 您需要一个OpenShift/Kubernetes集群的访问权限,通过有效的'kubeconfig'文件(通常在'~/.kube/config')或集群内配置。
    • 如果需要通过堡垒机访问私有集群,请确保对堡垒机有SSH访问权限。
  2. 本地安装(直接访问集群): 打开您的终端,导航到仓库目录,然后运行以下命令安装依赖:

    npm install
  3. 远程安装(通过堡垒机访问私有集群): 如果您的MCP服务器需要通过堡垒机连接到私有OpenShift/Kubernetes集群,请按照以下步骤设置:

    • 步骤一:认证设置
      • SSH密钥认证 (推荐):
        1. 如果您没有SSH密钥对,请生成一个:'ssh-keygen -t ed25519 -f ~/.ssh/id_rsa_bastion -C "mcp-server-access"'
        2. 将您的公钥复制到堡垒机上:'ssh-copy-id -i ~/.ssh/id_rsa_bastion.pub [email protected]'
        3. 测试SSH连接:'ssh -i ~/.ssh/id_rsa_bastion [email protected]'
        4. 根据您的设置,配置以下环境变量(或在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在堡垒机上的路径)
      • 密码认证 (可选):
        1. 安装'sshpass':'sudo apt-get install sshpass' (Ubuntu/Debian) 或 'brew install sshpass' (macOS)
        2. 配置以下环境变量:
          • '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"'
    • 步骤二:远程MCP服务器设置
      1. 运行设置脚本以在堡垒机上准备环境:
        ./scripts/setup-bastion.sh
        您可以使用选项 '-H' (host), '-U' (user), '-P' (password), '-s' (ssh_key) 等来提供参数。
      2. 测试远程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节点上的日志,查找所有错误和警告。"

信息

分类

开发者工具