使用说明

项目简介

nacos-istio 项目是一个 MCP (Model Context Protocol) 服务器的实现,它充当 Nacos 注册中心和 Istio 服务网格之间的桥梁。该服务器从 Nacos 获取服务注册信息,并将其转换为 Istio Pilot 可以理解的 MCP 协议格式,从而使得在 Nacos 中注册的服务能够被 Istio 服务网格自动发现和管理。简单来说,它让 Istio 能够使用 Nacos 作为服务注册中心,实现服务发现的功能。

主要功能点

  • MCP 服务器: 实现了 MCP 协议的服务端,能够响应 Istio Pilot 等 MCP 客户端的请求。
  • Nacos 集成: 与 Nacos 服务注册中心集成,可以动态监听 Nacos 中的服务变更。
  • 服务发现: 将 Nacos 中注册的服务信息转换为 Istio ServiceEntry 资源,并通过 MCP 协议推送给 Istio Pilot,实现服务发现功能。
  • Mock 模式: 提供 Mock 模式,可以模拟 Nacos 服务,用于测试 MCP 服务器的功能和性能,无需实际连接 Nacos。
  • 性能测试: Mock 模式支持配置模拟服务的数量和端点数量,用于测试 MCP 协议的性能和 Pilot 的处理能力。

安装步骤

  1. 下载仓库代码: 从 GitHub 仓库 'https://github.com/nacos-group/nacos-istio' 克隆代码到本地。
  2. 编译: 在 Linux 环境下,使用 Go 语言进行编译。确保已安装 Go 语言环境。
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build nacos-istio.go
    编译成功后,会在当前目录下生成可执行文件 'nacos-istio'。

服务器配置

MCP 服务器需要配置在 MCP 客户端(例如 Istio Pilot)中。以下是配置 nacos-istio MCP 服务器的 JSON 格式配置信息,用于 Istio Pilot 的 'configSource' 配置:

{
  "serverName": "nacos-mcp-server",
  "command": "./nacos-istio",
  "args": [
    "--nacos", "127.0.0.1:8848",  // Nacos 服务器地址,根据实际 Nacos 服务器地址修改
    "--grpcAddr", ":18848",      // MCP gRPC 服务器监听地址,Istio Pilot 将连接此地址
    "--httpAddr", ":18849"       // HTTP 调试服务器监听地址,用于健康检查等
  ],
  "description": "Nacos MCP Server for Istio Service Discovery"
}

参数注释:

  • 'serverName': MCP 服务器的名称,可以自定义。
  • 'command': 启动 MCP 服务器的可执行文件路径,这里假设 'nacos-istio' 可执行文件与 Istio Pilot 在同一目录下。请根据实际情况调整路径。
  • 'args': 传递给 'nacos-istio' 可执行文件的命令行参数,包括:
    • '--nacos': Nacos 服务器的地址和端口。请务必替换为实际 Nacos 服务器的地址。如果 Nacos 部署在 Kubernetes 集群内,可以使用 Kubernetes Service 的地址。
    • '--grpcAddr': MCP gRPC 服务器监听的地址和端口。默认 ':18848',Istio Pilot 需要配置连接到这个地址。可以根据需要修改端口。
    • '--httpAddr': HTTP 调试服务器监听的地址和端口。默认 ':18849',用于提供一些调试和健康检查接口。通常不需要修改。
  • 'description': 对该 MCP 服务器的描述,可以自定义。

在 Istio 中配置 MCP 服务器:

根据仓库 'README.md' 提供的步骤,需要编辑 Istio 的 'istio' ConfigMap,将 nacos-istio MCP 服务器添加到 'configSource' 列表中。

  1. 编辑 Istio ConfigMap:

    kubectl edit cm istio -n istio-system
  2. 添加 configSource: 在 'data.mesh' 字段的 'configSources' 列表中添加 nacos-istio MCP 服务器的地址。例如,假设 nacos-istio 服务器运行在 'x.x.x.x:18848':

    data:
      mesh: |-
        configSources:
        - address: x.x.x.x:18848
          name: nacos-mcp-server # 可选,与 serverName 保持一致

    请将 'x.x.x.x:18848' 替换为 nacos-istio MCP 服务器实际的 IP 地址和 gRPC 端口。 如果在 Kubernetes 集群内部署 nacos-istio,可以使用 Kubernetes Service 的地址和端口。

  3. 重启 Pilot: 配置更改后,需要重启 Istio Pilot 使配置生效。

    kubectl rollout restart deployment/istiod -n istio-system

基本使用方法

  1. 启动 nacos-istio MCP 服务器: 在服务器上运行编译好的 'nacos-istio' 可执行文件。

    • 真实 Nacos 模式: 直接运行 './nacos-istio',默认连接 '127.0.0.1:8848' 的 Nacos 服务器。可以通过 '--nacos' 参数指定 Nacos 服务器地址。
    • Mock 模式: 使用 '--mock=true' 参数运行,例如:
      ./nacos-istio --mock=true --mockServiceCount=50
      更多 Mock 模式参数请参考仓库 'README.md'。
  2. 在 Nacos 中注册服务: 确保需要在 Istio 服务网格中发现的服务已经在 Nacos 中注册。

  3. Istio 服务发现: Istio Pilot 会通过 MCP 协议从 nacos-istio 服务器获取服务信息,并将 Nacos 中注册的服务转换为 Istio 服务网格中的 ServiceEntry 资源,从而实现服务发现。

  4. 验证: 在 Istio 服务网格中验证是否能够访问通过 Nacos 注册的服务。可以通过 'istioctl get ServiceEntry' 命令查看 Istio 中生成的 ServiceEntry 资源。

注意:

  • 确保 nacos-istio 服务器可以访问 Nacos 服务器。
  • 确保 Istio Pilot 可以访问 nacos-istio 服务器的 gRPC 端口。
  • 详细配置和参数请参考仓库 'README.md' 和代码注释。

信息

分类

开发者工具