当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > Kubernetes Gateway API 替换 Ingress 时要核对哪些路由

Kubernetes Gateway API 替换 Ingress 时要核对哪些路由

来源:17golang原创 2026-09-15 03:57:50 0浏览 收藏

Kubernetes Gateway API 替换 Ingress 时,最该核对的不是资源名称,而是每条请求最终会命中哪个 Listener、HTTPRoute 和 Service。Ingress 把入口和路由规则压在一个对象里;Gateway API 则把它拆成 GatewayClass、Gateway、HTTPRoute 等资源。迁移前应先逐条盘点域名、路径、后端端口、TLS 和注解,再检查新实现是否保留了原来的访问结果。

先建立“旧 host/path/backend → 新 listener/HTTPRoute/backendRefs”的映射表,再迁移。只要 hostname 没有交集、Route 没有成功附着,或注解行为没有替代方案,配置即使能通过 YAML 解析,也不代表请求会到达原来的 Service。

官方资料入口:https://kubernetes.io/docs/concepts/services-networking/gateway/

要点速览
  • 先核对入口和 Listener,再核对 HTTPRoute 的 hostname、path 与 backendRefs。
  • Ingress 的 Prefix 大体对应 HTTPRoute 的 PathPrefix,但 ImplementationSpecific 不能直接照搬。
  • 跨命名空间引用、TLS 证书和控制器注解都要单独验证,最后用状态条件和灰度请求验收。

先把每条 Ingress 规则拆成三列

迁移清单的第一列写原 Ingress 的 hostpath,第二列写它实际依赖的入口和控制器,第三列写 Service 名称、端口以及是否经过重写、跳转、鉴权或限流。这样能把“看起来只是换 API”的工作,变成一组可验证的请求契约。

Ingress 关注点Gateway API 对应位置迁移时要确认
class / 入口地址GatewayClass、Gateway控制器、外部 IP、端口和 Listener 是否由同一个团队维护
host、TLS 域名Listener.hostname、HTTPRoute.hostnames、Listener TLS两处 hostname 是否相交,证书引用是否可读
path、pathTypeHTTPRoute.rules.matches.pathExact、PathPrefix 和正则/实现特性是否等价
service、portHTTPRoute.backendRefsService 端口、协议、命名空间和权重是否一致
Kubernetes Gateway API 将 Ingress 的入口、域名路径和 Service 后端拆分到 Gateway 与 HTTPRoute 的关系示意图
图1:Gateway API 迁移映射示意图,展示入口 Listener、HTTPRoute 和 Service 后端的对应关系。

GatewayClass、Gateway 与 HTTPRoute 要先对上层级

Ingress 控制器通常隐含提供 HTTP/HTTPS 入口;Gateway API 要显式创建 Gateway,并在 Listener 中声明协议、端口、hostname 和允许附着的 Route 类型。GatewayClass 决定由哪个控制器管理 Gateway,Gateway 代表实际承接流量的入口,HTTPRoute.parentRefs 决定路由要挂到哪个 Gateway 或 Listener。

先确认这条链路:GatewayClass 的控制器存在且被接受,Gateway 的 Listener 已进入可编程状态,HTTPRoute 的 parentRefs 指向正确对象。Gateway 默认只接受同命名空间的 Route;如果旧 Ingress 由多个命名空间共同维护,必须重新设计 allowedRoutes,而不是只复制原来的 host。

最容易漏的是 hostname、path 和默认行为

Gateway Listener 与 HTTPRoute 都可能写 hostname。两者没有交集时,Route 不会被接受;通配符也有边界,例如 *.example.com 不等于裸域名 example.com。把原来散落在多份 Ingress 中的域名合并成一条 Route 时,还要检查不同 Route 之间是否出现重叠,避免请求被更具体的规则抢先匹配。

路径也不能只看字符串。Gateway API 的 Exact 是大小写敏感的精确匹配,PathPrefix 按路径元素匹配,/api 会匹配 /api/v2,但不会匹配 /apiv2。Ingress 的 Prefix 通常可以对应 PathPrefixImplementationSpecific 则必须查所选控制器的实现说明。还要专门测试 /、带尾斜杠路径、未匹配路径,以及原 Ingress 的默认后端行为。

Kubernetes Gateway API Listener 与 HTTPRoute 的 hostname 交集和 Exact、PathPrefix 路由匹配边界示意图
图2:hostname 与路径匹配边界示意图,用于说明交集、精确匹配和前缀匹配的差异。

跨命名空间、TLS 和注解不能按名称硬搬

如果 HTTPRoute 要引用另一个命名空间的 Service,backendRefs.namespace 之外还需要在被引用资源所在命名空间创建 ReferenceGrant。没有授权时,Route 的 ResolvedRefs 应显示为失败,不能把这类问题当作后端暂时不健康。Gateway 引用其他命名空间的 Secret 也适用同样的显式授权思路。

TLS 迁移要核对 Listener 的 HTTPS 协议、终止模式、证书 Secret、SNI 域名和 HTTP 到 HTTPS 的跳转。原 Ingress 注解中的 URL 重写、请求头修改、灰度权重、鉴权、限流或 body 大小限制,不一定都有相同的核心字段;应逐条标记为 Gateway API 核心能力、扩展能力或控制器私有策略,并在选型文档里记录缺口。

用状态条件和灰度流量完成迁移验收

新对象部署后,先看 GatewayClass、Gateway 和 HTTPRoute 的状态条件,再发真实的 Host、路径、协议和异常请求。至少覆盖每个域名的首页、最具体路径、未匹配路径、HTTP/HTTPS、证书错误、后端不存在和跨命名空间引用失败场景。只有当日志中的 upstream、状态码和延迟与旧入口基线相符,才适合切换 DNS、LoadBalancer 地址或上游反向代理。

迁移最好保持一段时间的双轨运行:旧 Ingress 保留回退能力,新 Gateway 使用独立入口接收灰度流量。回退开关应明确写进发布流程,尤其是证书续期、重写规则和鉴权策略未完成时,不要因为 Gateway 对象显示 Programmed=True 就认定业务路由完全等价。

常见问题

Gateway API 能把 Ingress YAML 直接改名吗?

不能。Gateway API 是 Ingress 的后继 API,但资源模型、入口归属和 Route 附着方式不同,需要一次转换并重新验证实现特性。

HTTPRoute 的 hostnames 一定要写吗?

不一定。省略时可由路由规则匹配更广的流量,但仍受 Listener 的 hostname 和附着条件限制;生产迁移通常应明确写出业务域名。

为什么 Route 已创建却没有流量?

优先检查 parentRefs、Listener 的 allowedRoutes、hostname 是否相交,以及后端引用的 ResolvedRefs。跨命名空间时再检查 ReferenceGrant。

真正的迁移完成标准,是同一组请求在新旧入口上得到一致的路由、TLS 和错误处理结果,而不是新资源已经成功提交。把这份逐条清单保留下来,后续更换 Gateway 控制器时仍可复用。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go math/big.Int.SetString 如何判断进制输入失败Go math/big.Int.SetString 如何判断进制输入失败
上一篇
Go math/big.Int.SetString 如何判断进制输入失败
Go 泛型约束中 comparable 为什么仍不能比较所有值
下一篇
Go 泛型约束中 comparable 为什么仍不能比较所有值
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    27次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    131次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    65次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    23次使用
  • CMMLU中文大模型评估基准:功能、使用教程与应用场景解析
    CMMLU
    深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
    8次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码