项目简介

'flux-operator' 仓库不仅包含用于在Kubernetes中管理Flux CD的Operator,还包含一个基于Model Context Protocol (MCP) 实现的服务器组件,即 'flux-operator-mcp'。该MCP服务器充当AI客户端与Kubernetes集群中运行的Flux Operator及相关资源之间的桥梁,使AI助手能够理解集群状态、执行操作并提供自动化运维能力。

主要功能点

  • 查询集群状态: 获取Flux Instance的详细信息、已注册的Kubernetes API版本、特定Pod的日志以及任意Kubernetes资源(包括Flux CD管理的资源)。
  • 管理Kubernetes资源: 应用YAML清单创建或更新资源、删除指定资源。
  • 执行Flux CD操作: 触发Source(如GitRepository)、Kustomization、HelmRelease和ResourceSet等Flux CD资源的调和(reconcile)过程。
  • 控制调和: 暂停或恢复Flux CD资源的调和。
  • 管理Kubeconfig上下文: 列出可用的kubeconfig上下文或切换当前上下文。
  • 搜索Flux文档: 提供搜索Flux CD官方文档的能力,获取相关信息。
  • 调试辅助: 提供针对Flux Kustomization和HelmRelease的调试指导Prompt。

安装步骤

该MCP服务器作为 'flux-operator' 项目的一部分进行构建。通常会作为独立的可执行文件 'flux-operator-mcp' 或容器镜像进行分发。

  1. 构建可执行文件 (针对开发者或需要从源代码构建的用户): 克隆 'flux-operator' 仓库,并根据项目提供的构建说明编译 'cmd/mcp' 目录下的代码,生成 'flux-operator-mcp' 二进制文件。
  2. 获取分发版本: 对于终端用户,通常建议获取 ControlPlane.io 或 Flux CD 社区提供的预构建二进制文件或容器镜像。具体获取方式请参考 Flux Operator 的官方文档或发布页面。
  3. 确保Kubernetes访问: MCP服务器需要访问Kubernetes API。请确保运行 'flux-operator-mcp' 的环境已配置有效的 kubeconfig 文件,并且具有访问目标集群和相关资源的权限。环境变量 'KUBECONFIG' 应指向您的kubeconfig文件。

服务器配置 (供 MCP 客户端配置参考)

MCP客户端需要配置如何启动和连接 'flux-operator-mcp' 服务器。以下是可能的配置参数:

{
  "server": "flux-operator-mcp",
  "command": "flux-operator-mcp",
  "args": [
    "serve",
    "--transport", "<stdio|sse>", // 指定传输协议,例如 "stdio" 或 "sse"
    // "--port", "<port>", // 当 --transport=sse 时指定端口,例如 8080
    // "--timeout", "<duration>", // 操作超时时间,例如 "1m" (默认为 1 分钟)
    // "--mask-secrets", "<boolean>", // 是否在输出中掩盖 Secret 数据 (默认为 true)
    // "--read-only", "<boolean>", // 以只读模式运行,禁用写入和删除操作 (默认为 false)
    // Kubernetes 配置参数 (可选,通常从环境变量或默认位置加载,但如果需要覆盖则在此指定)
    // "--kubeconfig", "<path>", // kubeconfig文件路径
    // "--kube-context", "<name>", // kubeconfig上下文名称
    // "--namespace", "<namespace>", // 操作的默认命名空间
    // ... (其他 kubectl 支持的连接参数,如 --kube-as, --kube-token 等)
  ]
}

注意:MCP客户端通常在其配置中指定这些参数,而不是由用户直接在命令行输入。

基本使用方法

一旦 'flux-operator-mcp serve' 进程以后端方式启动,AI客户端即可通过配置的传输协议(如标准输入/输出或SSE)连接到该服务器。AI客户端会通过JSON-RPC协议向服务器发送请求,调用暴露的“工具”和“Prompt”。

例如,AI客户端可能会发送一个JSON-RPC请求来调用名为 'get_kubernetes_resources' 的工具,附带参数指定要获取的资源类型、名称和命名空间。服务器接收请求,执行相应的Kubernetes API调用,并将结果(通常是YAML或JSON格式的资源数据)作为JSON-RPC响应返回给客户端。

用户通过AI客户端与AI助手进行自然语言交互,AI助手将用户的请求转化为MCP协议调用,由 'flux-operator-mcp' 服务器执行。

信息

分类

开发者工具