首页 > 其他资讯 > 别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接

别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接

时间:26-04-25

实战:重写URL前缀路径

在微服务架构的API网关实践中,路径适配是处理前后端路由不一致的核心环节。典型场景是客户端请求路径(如`/api/v1/users`)与后端服务实际监听路径(如`/users`)不匹配。此时,需要在网关层进行URL路径重写,实现请求的精准转发。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

Envoy Gateway基于Envoy Proxy构建,为Kubernetes环境提供了强大的路由与重写能力。下面通过具体配置,演示如何利用其Rewrite URL Prefix Path功能。

第一个实战场景的需求如下:

  • 客户端请求: `http://example.local/api/v1/who`
  • 后端服务实际路径: `/who`
  • 目标: 通过API网关将请求路径中的`/api/v1/who`前缀,重写为`/who`后转发至后端服务。

实现此功能的关键在于配置HTTPRoute资源,并应用URLRewrite过滤器。具体配置示例如下:


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - example.local
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /api/v1/who # 浏览器访问路径
   filters:
   - type: URLRewrite
     urlRewrite:
       path:
         type: ReplacePrefixMatch
         replacePrefixMatch: /who # 业务收到访问路径
   backendRefs:
   - name: simple
     port: 80
EOF

配置应用后,可通过以下方式验证服务是否按预期工作:

实战:重写URL完整路径

除了前缀替换,有时需要替换整个请求路径。这在统一健康检查或就绪探针接口时尤为常见。

考虑以下场景:

  • 客户端请求: `/status/healthz` 和 `/status/readyz`
  • 后端服务实际路径: `/ping`
  • 目标: 将客户端对`/status/healthz`或`/status/readyz`的请求,统一重写为`/ping`后转发。

此场景需使用`ReplaceFullPath`类型来替换整个匹配路径。配置示例如下:


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - example.local
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /status # 浏览器访问路径
   filters:
   - type: URLRewrite
     urlRewrite:
       path:
         type: ReplaceFullPath
         replaceFullPath: /ping # 业务收到访问路径
   backendRefs:
   - name: simple
     port: 80
EOF

配置完成后,验证重写效果:

实战:重写主机名

路径重写之外,主机名(Host)重写在多租户SaaS架构中同样关键。此类应用常使用不同子域名区分租户,例如:

  • `tenant1.simple.com`
  • `tenant2.simple.com`

后端服务需根据Host头识别租户,但所有请求最终需路由至`simple.com`对应的业务服务。为避免后端维护大量租户域名,可在网关层重写Host头。

Envoy Gateway的URLRewrite过滤器同样支持此操作。


cat <<'EOF' | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
 name: simple
spec:
 hostnames:
 - "*.simple.com"
 parentRefs:
 - group: gateway.networking.k8s.io
   kind: Gateway
   name: simple-gw
 rules:
 - matches:
   - path:
       type: PathPrefix
       value: /
   filters:
   - type: URLRewrite
     urlRewrite:
       hostname: www.simple.com
   backendRefs:
   - name: simple
     port: 80
EOF

验证结果显示Host头已按配置被重写:

结语

Envoy Gateway的URLRewrite过滤器提供了灵活的路径前缀、完整路径及主机名重写能力。这项功能有效解耦了客户端请求格式与后端服务接口设计,支持前后端独立演进。对于构建灵活、可维护的微服务集成架构而言,这是简化部署流程、提升运维效率的核心特性。


这就是别再硬改代码了!Envoy Gateway 这个功能让路由无缝对接的全部内容了,希望以上内容对小伙伴们有所帮助,更多详情可以关注我们的菜鸟游戏和软件相关专区,更多攻略和教程等你发现!

热搜     |     排行     |     热点     |     话题     |     标签

手机版 | 电脑版 | 客户端

湘ICP备2022003375号-1

本站所有软件,来自于互联网或网友上传,版权属原著所有,如有需要请购买正版。如有侵权,敬请来信联系我们,cn486com@outlook.com 我们立刻删除。