MSE Nacos Controller:为 Kubernetes 生态构建配置管理与服务发现的桥梁

作者:正己

背景

在企业加速推进数字化转型的今天,大多数组织正面临一个共同的挑战:如何在从传统基础设施向云原生架构迁移的过程中,保障业务连续性、配置一致性以及服务间的高效互通。这种转型通常并非一蹴而就,而是渐进式的演进过程。在此期间,企业往往需要同时维护多套异构的基础设施------既有运行在虚拟机或物理机上的传统微服务,也有部署在 Kubernetes 中的云原生应用。这不仅导致配置管理分散,也使得服务注册与发现机制割裂:传统系统依赖如 Nacos、Eureka 等注册中心实现服务治理,而 Kubernetes 原生则通过 DNS 和 Service 机制进行服务定位,两者互不相通。

这种架构上的不统一,带来了服务调用链路断裂、跨环境发现困难、配置协同复杂等问题,严重影响系统的稳定性与迭代效率。因此,构建一个跨平台的统一配置管理、服务注册与发现机制,实现传统微服务与云原生服务之间的无缝对接,已成为企业平滑演进至云原生时代的关键需求。

与此同时,在 AI 技术迅猛发展的背景下,越来越多的应用需要将 REST API 转换为 MCP(Model Context Protocol)服务,以支持 AI Agent 的调用需求。这类协议转换功能通常由网关类产品实现,例如 Higress。而要完成这一转换,关键在于有一个统一的服务注册与发现机制作为支撑。

以 Higress 为例,当其结合 Nacos 作为 MCP 注册中心时,可高效地将 REST API 自动转换为 MCP 服务。然而,对于已运行在 Kubernetes 上的微服务应用而言,亟需一种机制,能够将其服务快速、自动地注册到 Nacos 中,从而无缝接入 MCP 协议转换体系。

上述趋势带来了三大核心问题:

  • 异构架构下的配置如何统一管理?

    ------ 如何实现 Kubernetes ConfigMap 与 Nacos 配置的协同治理?

  • 异构架构下的服务如何统一注册与发现?

    ------ 如何打通 Kubernetes Service 与传统微服务之间的调用壁垒?

  • 存量 Kubernetes 服务如何快速接入 MCP 网关?

    ------ 如何实现服务自动注册,支撑 AI 场景下的协议转换?

Nacos-Controller 带来的新价值

MSE Nacos Controller 的推出,正是为了解决上述痛点,构建起 Kubernetes 与 Nacos 之间的桥梁,实现配置与服务的双向同步,助力企业构建统一的云原生治理平台。

一、构建异构架构下的统一配置管理平台

Nacos Controller 充当配置同步引擎,实现实时双向同步 Kubernetes ConfigMap 与 Nacos 配置:

  • 将 Kubernetes 中的 ConfigMap 自动同步至 Nacos,由 Nacos 统一管理;
  • 支持从 Nacos 控制台反向修改配置,变更自动同步回 Kubernetes 集群;
  • 用户无需频繁切换控制台,降低误操作风险,提升运维效率;
  • 充分利用 Nacos 提供的高级配置能力,如:
    • 配置灰度发布
    • 配置版本管理
    • 配置加密存储
    • 动态推送机制

二、打造服务互通的服务注册与发现中心

通过 Nacos Controller,Kubernetes 中的 Service 可被自动注册到 Nacos 注册中心,实现跨环境、跨架构的服务互通:

  • 支持 Kubernetes 微服务、传统 IDC 虚拟机/物理机服务、多集群服务统一注册;
  • 应用可通过 Nacos 发现并调用任意位置的服务提供者;
  • 实现跨平台服务调用的无缝集成,提升系统整体灵活性与可扩展性。

典型架构示意图如下:

三、成为 AI 场景下 MCP 协议转换的关键桥梁

在 AI 应用场景中,Higress 等 MCP 网关依赖 Nacos 作为服务注册源,动态感知 REST API 并转换为 MCP 服务。Nacos Controller 正是连接 Kubernetes 与 MCP 生态的关键组件:

  • 将 Kubernetes 中的 Service 实时同步至 Nacos;
  • Higress 从 Nacos 订阅服务列表,自动识别 REST 接口并生成对应的 MCP 服务;
  • AI Agent 可通过标准 MCP 协议调用后端服务,无需关心底层实现细节。

操作实践

1. 购买 MSE Nacos 实例

方式一:未开通 MSE 集群托管服务

  • 进入 MSE 产品页,点击【立即购买】;
  • 选择【注册配置中心】页签;
  • 根据业务需求选择商品类型、地域、规格等参数;
  • 完成支付并创建实例。

方式二:已开通 MSE 集群托管服务

  • 登录 MSE 管理控制台;
  • 左侧导航栏选择【注册配置中心 > 实例列表】;
  • 点击【创建实例】,填写相关信息后提交。

详细操作指南:创建 MSE Nacos 实例【1】

2. 创建 Secret ,保存 Nacos 用户名密码(可选)

Nacos 引擎版本 3.0 及以上,运维接口默认开启了鉴权,默认使用用户名密码鉴权。因此,需要首先创建 Secret 保存 Nacos 用户名密码,可通过 ACK/ACS 控制台或命令行创建。这里以命令行创建为例,需要注意的是用户名密码需要经 base64 编码。

yaml 复制代码
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    username: <base64 your-nacos-username>
    password: <base64 your-nacos-password>

使用命令部署:

arduino 复制代码
kubectl apply -f nacos-auth-secret.yaml -n <namespace>

3. 开启 ACK/ACS RRSA 功能,创建 RAM 角色,并授予相关权限(可选)

若启用阿里云 RAM 鉴权,需配置 OIDC 支持的 RRSA(Role-based Service Account):

  • 在 ACK/ACS 控制台开启容器 RRSA 功能,相关操作细节参考:开启容器RRSA功能并授权【2】。
  • 创建 RAM 角色,配置信任策略,允许特定 ServiceAccount 担任角色;
  • 授予 Nacos 相关权限(如读写配置、服务注册等)。

以 ACK 为例,这里给出最终 RAM Role 信任策略示例:

json 复制代码
{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "oidc:aud": [
            "sts.aliyuncs.com"
          ],
          "oidc:iss": [
            "https://oidc-ack-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/<ACK集群ID>"
          ],
          "oidc:sub": [
            "system:serviceaccount:<K8s命名空间>:mse-nacos-controller",
          ]
        }
      },
      "Effect": "Allow",
      "Principal": {
        "Federated": [
          "acs:ram::<阿里云UID>:oidc-provider/ack-rrsa-<ACK集群ID>"
        ]
      }
    }
  ],
  "Version": "1"
}

授权策略如下图:

4. ACK/ACS 安装 MSE Nacos Controller

  1. 登录容器服务管理控制台【3】。
  2. 在左侧导航栏中单击市场 -> 应用市场,在运维/可观测应用场景下找到 mse-nacos-controller 应用并单击。
  3. 在页面右上方单击一键部署,选择需要安装的集群、集群中的命名空间,填写发布名称,单击下一步。
  4. 在参数配置页面,参考通用参数配置说明修改参数,也可以使用默认的配置,单击确定。
  5. 等待指定命名空间中的 pod 全部变成 Running 状态,表示安装已完成。

安装完成后可以看到相关 CRD 及 Controller。

5. 创建自定义资源,实现 configmap 双向同步

完成 MSE Nacos Controller 安装后,只需创建 DynamicConfiguration 资源,即可实现配置双向同步。以下给出示例

yaml 复制代码
apiVersion: nacos.alibabacloud.com/v1
kind: DynamicConfiguration
metadata:
   name: dc-demo
spec:
   nacosServer:
      # serverAddr: nacos地址
      serverAddr: <MSE Nacos域名>
      # namespace: 用户指定的命名空间
      namespace: <Nacos命名空间Id>
      # authRef: 引用存放Nacos 客户端鉴权信息的Secret,支持用户名/密码,Nacos服务端未开启鉴权可忽略
      authRef:
         apiVersion: v1
         kind: Secret
         # secret名称要与前序步骤中创建的Secret名称一致
         name: nacos-auth-secret
   strategy:
      # scope: 同步策略,因安全考虑只支持按需同步,不支持全量同步
      scope: partial
      # 是否同步配置删除操作
      syncDeletion: true
      # conflictPolicy: 同步冲突策略,preferCluster 表示初次同步内容冲突时以Kubernetes集群配置为准,preferServer 表示以Nacos配置为准
      conflictPolicy: preferCluster
   objectRefs:
      - apiVersion: v1
        kind: ConfigMap
        name: nacos-config-cm
      - apiVersion: v1
        kind: ConfigMap
        name: nacos-config-cm-1

使用 kubectl 命令部署,之后即可实现 configmap 双向同步。

xml 复制代码
kubectl apply -f dc-demo.yaml -n <configmap所在的命名空间>

6. 创建自定义资源,同步 Kubernetes 服务到 Nacos

服务同步与配置同步类似,创建 ServiceDiscovery 自定义资源,指定需要同步的服务列表即可,示例如下:

yaml 复制代码
apiVersion: nacos.alibabacloud.com/v1
kind: ServiceDiscovery
metadata:
   name: sd-demo
spec:
   nacosServer:
      # serverAddr: nacos地址
      serverAddr: <MSE Nacos域名>
      # namespace: 用户指定的命名空间
      namespace: <Nacos命名空间Id>
      # authRef: 引用存放Nacos 客户端鉴权信息的Secret,支持用户名/密码,Nacos服务端未开启鉴权可忽略
      authRef:
         apiVersion: v1
         kind: Secret
         # secret名称要与前序步骤中创建的Secret名称一致
         name: nacos-auth-secret
   # 用户需要同步的service名称列表;
   services: ["nginx-test","nginx-test-1"]

使用 kubectl 命令部署,之后即可实现 Kubernetes 服务同步至 Nacos。

xml 复制代码
kubectl apply -f sd-demo.yaml -n <Service所在的命名空间>

同步完成后,相关服务将在 Nacos 控制台中可见,供 Higress 或其他客户端消费。

总结

MSE Nacos Controller 是连接 Kubernetes 与 Nacos 生态的核心组件,有效解决了企业在云原生迁移与 AI 转型过程中面临的配置割裂、服务孤岛与协议不兼容等问题。

它通过 双向配置同步 与 服务自动注册 两大能力,实现了:

  • 统一配置管理:打破 Kubernetes 与 Nacos 之间的配置壁垒,实现configmap变更历史管理、快速回滚等;
  • 统一服务注册中心:打通 Kubernetes、传统 IDC 与多集群服务,实现跨环境服务互通;
  • 支撑 AI 场景下的 MCP 协议转换:为 Higress 等网关提供服务源,助力 REST API 快速升级为 AI 可调用的 MCP 服务。

通过简单的 CRD 配置,即可完成复杂系统的集成,大幅降低运维复杂度,提升系统灵活性与智能化水平。

参考文章:

手把手带你玩转基于 Nacos + Higress 的 MCP 开发新范式

nacos.io/blog/nacos-...

Nacos 3.0 架构全景解读,AI 时代服务注册中心的演进

nacos.io/blog/nacos-...

Nacos 配置中心变更利器:自定义标签灰度

nacos.io/blog/nacos-...

企业生产环境中,实现 MCP 服务的统一管理和智能路由的实践

nacos.io/blog/nacos-...

附:

【1】创建 MSE Nacos 实例

idealab.alibaba-inc.com/ideaTalk#

【2】开启容器RRSA功能并授权

help.aliyun.com/zh/ack/ack-...

【3】容器服务管理控制台

cs.console.aliyun.com/

2025杭州·云栖大会,来了!

9月24日至26日,杭州·云栖小镇

三场重磅主论坛

超110场聚合话题专场

40000平方米智能科技展区

点击此处免费注册领取云栖大会门票

相关推荐
fanly113 天前
Surging AI Agent 完整产品介绍
微服务·microservice
蝎子莱莱爱打怪9 天前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试
SamDeepThinking10 天前
Java微服务练习方式
java·后端·微服务
米丘13 天前
微前端之 Web Components 完全指南
微服务·html
霸道流氓气质16 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
霸道流氓气质17 天前
Spring Boot 微服务性能优化完全指南
spring boot·微服务·性能优化
地瓜伯伯17 天前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud
Devin~Y17 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
递归尽头是星辰17 天前
AI 访问数据仓库:从直连到微服务化
数据仓库·人工智能·微服务·dataagent·ai数据治理
就改了17 天前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking