写点什么

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

  • 2025-08-12
    浙江
  • 本文字数:4399 字

    阅读完需:约 14 分钟

作者:正己

背景

在企业加速推进数字化转型的今天,大多数组织正面临一个共同的挑战:如何在从传统基础设施向云原生架构迁移的过程中,保障业务连续性、配置一致性以及服务间的高效互通。这种转型通常并非一蹴而就,而是渐进式的演进过程。在此期间,企业往往需要同时维护多套异构的基础设施——既有运行在虚拟机或物理机上的传统微服务,也有部署在 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 编码。


apiVersion: v1kind: Secretmetadata:    name: nacos-authdata:    username: <base64 your-nacos-username>    password: <base64 your-nacos-password>
复制代码


使用命令部署:


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 信任策略示例:


{  "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 资源,即可实现配置双向同步。以下给出示例


apiVersion: nacos.alibabacloud.com/v1kind: DynamicConfigurationmetadata:   name: dc-demospec:   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 双向同步。


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

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

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


apiVersion: nacos.alibabacloud.com/v1kind: ServiceDiscoverymetadata:   name: sd-demospec:   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。


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 开发新范式


https://nacos.io/blog/nacos-gvr7dx_awbbpb_lup4w7e1cv6wktac/


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


https://nacos.io/blog/nacos-gvr7dx_awbbpb_gzlzyehxberthsng/


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


https://nacos.io/blog/nacos-gvr7dx_awbbpb_ir01zzd3q20fa3xq/


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


https://nacos.io/blog/nacos-gvr7dx_awbbpb_kpokkrgszm1ic3x5/


附:


【1】创建 MSE Nacos 实例


https://idealab.alibaba-inc.com/ideaTalk#


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


https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-rrsa-to-authorize-pods-to-access-different-cloud-services


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


https://cs.console.aliyun.com/


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


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


三场重磅主论坛


超 110 场聚合话题专场


40000 平方米智能科技展区


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

发布于: 刚刚阅读数: 3
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
MSE Nacos Controller:为 Kubernetes 生态构建配置管理与服务发现的桥梁_阿里云_阿里巴巴云原生_InfoQ写作社区