ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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写nacos21.x 写nacosKubernetes1.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.x1.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未指定命名空间时命名空间位置写publicbackend.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),仅供参考
返回列表