news 2026/10/4 13:33:44

3 步接入 Higress Nacos 服务发现:微服务动态路由与灰度发布实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3 步接入 Higress Nacos 服务发现:微服务动态路由与灰度发布实战

3 步接入 Higress Nacos 服务发现:微服务动态路由与灰度发布实战

【免费下载链接】higress🤖 AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress

凌晨扩容后你下线了两个服务副本,网关的 upstream 列表里却依然留着已下线的实例——用户在配置手动刷新前持续随机命中 5xx。Higress Nacos 服务发现正是针对这类痛点:网关把 Nacos 当作注册中心持续拉取实例列表,实例上下线自动反映到路由表里,动态路由、灰度发布都不再需要改任何业务代码。

一、这套组合解决了什么

Higress 自己并不保存服务清单,它把实例列表的获取完全交给注册中心。你只需要在 McpBridge 资源里登记 Nacos 的地址、端口、分组和命名空间,Higress 控制器就会持续与 Nacos 同步;Ingress 里只写目标服务名,具体由哪些 IP 承接流量,由服务发现层在运行时自动填充并刷新。整条链路里,你面对的是"服务名",而不是实例 IP。

落到日常运维上,这套组合的效果很直接:

  • 实例扩缩容、宕机替换 → 网关下一次同步即拿到新实例列表,路由跟着自动变化,你不需要重启或改配置
  • 灰度发布要放一小部分流量 → 按权重或按请求头分流,第二版本服务可以精确接走指定比例
  • 多环境、多业务线共用一个 Nacos → 用分组加命名空间隔离,互不串扰

二、动手前备齐这些

组件版本要求部署要点
Higressv1.0+网关与控制器需能访问 Nacos 的 8848 端口
Nacos1.4.x 或 2.x2.x 时 McpBridge 的type写nacos2,1.x 写nacos
Kubernetes1.20+(容器化部署时)测试环境可用单节点 Nacos,参考 test/e2e/conformance/base/nacos.yaml

三、三步接入 Nacos

📌 下面三步走完,一条从网关到 Nacos 服务的完整链路就跑通了。

步骤一:创建 McpBridge 注册中心连接

apiVersion: networking.higress.io/v1 kind: McpBridge metadata: name: default namespace: higress-system spec: registries: - name: my-nacos type: nacos2 # Nacos 2.x;1.x 请写 nacos domain: 192.168.3.32 # Nacos 服务地址 port: 8848 nacosGroups: [DEFAULT_GROUP] # 要发现哪些分组的服务

这段配置告诉 Higress:"到 192.168.3.32 的 Nacos 上,订阅 DEFAULT_GROUP 分组的服务列表"。如果服务注册在指定命名空间,再加一行nacosNamespaceId: <命名空间ID>。

步骤二:配置 Ingress 基础路由

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: echo annotations: higress.io/destination: service-provider.DEFAULT-GROUP.public.nacos spec: ingressClassName: higress rules: - http: paths: - path: /echo pathType: Prefix backend: resource: {apiGroup: networking.higress.io, kind: McpBridge, name: default}

这里做了两件事:higress.io/destination注解指定流量去 Nacos 里的service-provider服务(服务名.分组.命名空间.nacos,未指定命名空间时命名空间位置写public);backend.resource则把请求绑定到步骤一的 McpBridge,表示这个目标服务从注册中心发现,而不是本集群的 Service。

步骤三:验证服务已被发现

先执行kubectl get mcpbridge -n higress-system,确认资源创建成功且字段被 API Server 接受;随后向/echo路径发一个真实请求,返回 200 且响应来自 Nacos 注册的实例,说明发现链路已端到端打通。

四、三种路由进阶玩法

配置权重灰度

把 destination 注解写成多行,每行一个权重% 目标:

annotations: higress.io/destination: | 70% service-provider.DEFAULT-GROUP.public.nacos 30% service-provider-gray.DEFAULT-GROUP.public.nacos

效果:70% 流量进存量服务,30% 进灰度服务,调整百分比即可平滑放量。更多语法细节见 destination 注解 FAQ。

按请求头分流多版本

再建一个指向 v2 服务的 Ingress(同路径),加上注解nginx.ingress.kubernetes.io/canary: 'true'、nginx.ingress.kubernetes.io/canary-by-header: x-service-version、nginx.ingress.kubernetes.io/canary-by-header-value: v2。效果:携带x-service-version: v2头的请求命中 v2 服务,其余走默认版本,适合按租户或灰度名单切流。

健康检查联动

Nacos 侧维护实例健康状态,Higress 同步时会自动剔除不健康实例,不需要你为每个 Nacos 服务单独配置健康检查;实例恢复后下一次同步自动回到 upstream 池。

五、生产环境调优清单

  • 实例变化希望更快生效 → 调低nacosRefreshInterval(单位秒),高频变更场景设 15 秒左右即可;低频场景 30-60 秒更省资源
  • 开发、测试、生产混在一个 Nacos → 环境之间用nacosGroups分分组隔离,业务线之间用nacosNamespaceId分命名空间隔离
  • 网关资源吃紧 → 给 Higress 组件配置合理的 CPU/内存 requests 和 limits,避免与业务容器争抢
  • Nacos 开启了鉴权 → 配置nacosAccessKey、nacosSecretKey等认证字段,或改用authSecretName引用 Secret

六、踩坑速查

⚠️ 按这张表排查,能覆盖绝大多数接入失败的场景。

现象可能原因处理
服务列表为空、无上游Nacos 地址或端口配错核对 McpBridge 的domain、port,确认集群内 8848 连通
路由 404destination 注解格式不对检查服务名.分组.命名空间.nacos四段格式,public 命名空间写public
同步失败Nacos 鉴权不通过检查认证字段nacosAccessKey/nacosSecretKey或authSecretName配置
灰度流量不生效canary Ingress 缺注解或头部值不匹配核对canary-by-header与canary-by-header-value和请求头是否一致

完整可运行的示例见 samples/nacos-discovery/,destination 注解的权重与协议语法细节见 docs/faq/mcpbridge-destination-annotation.md,项目背景与部署方式可继续参考 README_ZH.md 和 CONTRIBUTING_CN.md。

【免费下载链接】higress🤖 AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 13:26:14

插件系统本质:运行时契约与TypeScript SDK工程化实践

1. 插件系统不是“附加功能”&#xff0c;而是现代开发工具的神经中枢你打开 Cursor、VS Code、JetBrains IDE&#xff0c;甚至某些新一代终端或设计工具&#xff0c;第一眼看到的“扩展市场”“插件商店”界面&#xff0c;绝不是锦上添花的装饰——它是整套开发环境的可编程骨…

作者头像 李华
网站建设 2026/10/4 13:26:07

Wind Excel插件与Python接口:债券估值数据批量自动化实战

做债券数据活的人&#xff0c;应该都有过这段经历&#xff1a;月初拿到一张几百行的持债清单&#xff0c;要求补全中债估值收益率、修正久期、票面利率、待偿期限&#xff0c;还得按主体评级筛一遍。最早我靠Wind终端一只一只点开&#xff0c;复制粘贴到Excel&#xff0c;做完差…

作者头像 李华
网站建设 2026/10/4 13:25:45

OpenShell定制Windows 11开始菜单:从安装到进阶配置全攻略

“OpenShell”这个词&#xff0c;很多Windows折腾老手看到的第一反应就是“Classic Shell回来了”。没错&#xff0c;它就是那个在Windows 8被骂成狗、Windows 10鸡肋、Windows 11强行居中任务栏的时代里&#xff0c;让无数人找回经典的开始菜单、找回高效操作习惯的开源神器。…

作者头像 李华
网站建设 2026/10/4 13:25:37

Claude Code 接入 DeepSeek V4 Pro:环境变量配置与成本优化实战

1. 为什么我要折腾这套组合Claude Code 刚出来那阵子我就开始用了&#xff0c;说实话体验确实好&#xff0c;终端里直接对话式改代码、跑命令、读文件&#xff0c;整个交互逻辑比传统 IDE 插件顺手不少。但问题也很现实&#xff1a;订阅费用对个人开发者来说不算便宜&#xff0…

作者头像 李华
网站建设 2026/10/4 13:23:15

Claude Code配额墙破解:断点续传三板斧实战

1. 撞上配额墙这件事&#xff0c;到底卡在哪儿用 Claude Code 干活的人&#xff0c;迟早会撞上那堵墙。你正写到一半&#xff0c;终端里突然弹出一行提示&#xff0c;大意是当前会话的用量已经达到上限&#xff0c;请等待下一个周期重置。那一瞬间的感觉&#xff0c;就像打游戏…

作者头像 李华