当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > Kubernetes Gateway API 进入新阶段后怎样理解迁移影响

Kubernetes Gateway API 进入新阶段后怎样理解迁移影响

来源:17golang原创 2026-10-24 20:31:13 0浏览 收藏

Kubernetes Gateway API 进入新阶段,真正改变的不是“明天必须把所有 Ingress 删除”,而是入口流量的资源模型、职责边界和可移植能力开始有了更完整的标准答案。当前 Ingress API 仍然稳定,但已经冻结;Gateway API 则继续扩展 Standard 能力,尤其是对 HTTP 之外的 TCP、UDP 以及服务网格场景的覆盖。

官方地址:https://gateway-api.sigs.k8s.io/

因此,迁移的正确理解是:先把现有 Ingress 中“标准路由”和“控制器私有注解”分开,再让 Gateway API 控制器与旧入口并行,按业务入口逐步切换。Gateway API v1.6 已将 TCPRoute、UDPRoute 提升到 Standard,并将后续实验资源放入 gateway.networking.x-k8s.io;这会影响新资源的选型,却不会自动改变已有 Ingress 对象。

Kubernetes Gateway API 从 Ingress 存量到 Gateway、HTTPRoute 和 TCPRoute 的静态阶段关系图
图1:Gateway API 新阶段的静态关系说明图,展示旧 Ingress 存量、Standard 资源与实验资源的边界,不是运行截图。

先把“新阶段”拆成三个事实

第一,Ingress 没有被删除。Kubernetes 文档明确说明,Ingress API 已冻结,项目没有移除计划,已有业务可以继续运行。第二,Gateway API 不是 Kubernetes 核心内置的某个单一负载均衡器,而是一组由控制器实现的 CRD;安装哪个控制器、支持哪些扩展,仍然是平台团队要做的选择。第三,Gateway API 的版本节奏与 Kubernetes 集群小版本解耦,升级 Gateway API 并不等同于升级整个集群。

v1.6 的信号在于:TCPRoute 和 UDPRoute 进入 v1 Standard,说明 Gateway API 已从“主要解决 HTTP/HTTPS 入口”继续向更完整的 L4/L7 网络 API 延伸。与此同时,新的实验资源不再和 Standard 资源混在同一个 API 组里,而是使用带 x- 的实验组名。团队审查 YAML 时,应先看 API 组和版本,再判断能否把它当成可迁移的标准契约。

迁移时最先变化的是资源职责

传统 Ingress 把入口、主机路径、TLS 和控制器选择压缩在一个对象里,复杂能力通常靠注解扩展。Gateway API 将这些职责拆开:GatewayClass 表示由哪类控制器实现,Gateway 描述入口监听器,HTTPRoute 或 TCPRoute 描述路由规则,平台或实现方策略再承载认证、超时等不完全标准化的能力。

这个拆分对多团队集群更重要。集群运维可以管理 Gateway 和监听器,应用团队只提交 HTTPRoute;路由通过 parentRefs 显式挂到某个 Gateway,而不是依赖一个模糊的默认入口。迁移时不要只做字段翻译,还要重新确认“谁可以修改哪个对象”。

# Gateway 由平台侧声明入口与监听器,HTTPRoute 由应用侧声明路由
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: public-gateway
  namespace: platform-network
spec:
  gatewayClassName: example-gateway-class
  listeners:
    - name: https
      protocol: HTTPS
      port: 443
      hostname: app.example.com
      # TLS 证书仍由 Secret 提供,具体跨命名空间规则需按实现配置
      tls:
        mode: Terminate
        certificateRefs:
          - name: app-example-com
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: app-route
  namespace: app-team
spec:
  # 通过 parentRefs 显式声明这条路由挂到哪个 Gateway
  parentRefs:
    - name: public-gateway
      namespace: platform-network
      sectionName: https
  hostnames:
    - app.example.com
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      # backendRefs 指向 Service,不把后端地址写进入口对象
      backendRefs:
        - name: app-service
          port: 8080

上面的代码只表达资源关系和权限边界;它不是某个云厂商控制器的完整生产清单。跨命名空间引用、证书引用和策略附着都要按选定实现的文档补齐授权。

旧 Ingress 里的注解不能机械搬家

迁移成本通常藏在注解里,而不在 host、path 和后端 Service 这些显眼字段里。重定向、请求头改写、流量切分等能力已经有一部分对应到 HTTPRoute;认证、连接超时、健康检查等能力,则可能需要 Gateway 实现的策略资源或自定义扩展。也就是说,转换工具可以减少 YAML 手工劳动,却不能替平台团队做兼容性决策。

建议为每条注解建立三种状态:有标准字段可映射、需要控制器策略、暂时没有等价物。第三类不要在迁移时悄悄删除,应保留旧入口或先在影子环境验证替代行为。官方迁移指南也明确提醒,Ingress 的实现特定功能仍要结合源控制器和目标 Gateway 实现判断。

Ingress 注解迁移到 Gateway API 标准字段、策略扩展或暂缓项的静态决策边界图
图2:迁移决策边界说明图,把旧注解分到标准字段、策略扩展和暂缓处理三类,帮助安排回归范围。

一套更稳妥的迁移落地路径

第一步:盘点入口,而不是先改 YAML

列出每个 Ingress 的控制器、外部地址、域名、TLS Secret、路径匹配、重写规则、认证注解和回滚依赖。特别标出同一域名由多个 Ingress 共享、依赖默认后端或依赖控制器私有行为的对象。没有这张清单,迁移后的“配置成功”可能只是丢掉了旧注解。

第二步:选择控制器并确认支持边界

Gateway API 的资源规范统一,不意味着所有实现的扩展都一致。先确认目标控制器支持的 Gateway API 版本、Standard/Experimental 资源、策略模型、跨命名空间引用和 conformance 信息,再决定首批迁移哪些入口。对核心生产流量,优先选择 Standard 资源;实验组资源应明确记录版本和退出路径。

第三步:并行部署,隔离外部流量

官方迁移建议允许 Gateway API 控制器与原 Ingress-NGINX 并行运行,让两套入口获得不同的外部地址,在不影响生产入口的前提下验证。这个阶段的重点不是把 DNS 立刻切过去,而是比较 TLS、重定向、路径匹配、请求头、超时和后端健康状态。

# 查看 Gateway API 资源的状态条件,重点关注 Accepted 和 Programmed
kubectl get gatewayclass,gateway,httproute -A

# 只读取目标 Gateway 的详细条件,不修改线上对象
kubectl describe gateway public-gateway -n platform-network

# 检查路由是否被目标 Gateway 接受,失败时回到控制器事件与实现文档
kubectl describe httproute app-route -n app-team

命令输出中的条件状态是控制器反馈,不是 Kubernetes API 自动保证的业务可用性。还需要使用测试域名或受控流量验证证书链、状态码、重试和日志。

第四步:按域名或业务单元切换

不要一次性把所有 Ingress 转成一组巨大 HTTPRoute。按域名、团队或风险等级拆分资源,先切低风险业务,再切有认证、重写和跨命名空间引用的入口。每个单元都要保留原 Ingress 清单和 DNS 回退记录,确认新入口稳定后再决定是否删除旧对象。

第五步:把回退写进操作手册

回退不仅是“重新应用旧 YAML”。还应包含 DNS 或负载均衡切回、证书 Secret 的归属、两套控制器的地址、策略资源清理、监控告警和变更窗口。若只是暂停 Gateway API 控制器而保留已切换的 DNS,入口仍可能不可用;回退顺序要按实际流量路径编排。

哪些团队现在就该迁移,哪些可以继续观察

如果团队正在新建平台入口、需要多租户职责分离、需要标准化的流量切分,或者已经使用 TCP/UDP 入口,Gateway API 值得作为新基线。新项目直接采用 Gateway、HTTPRoute、TCPRoute 等 Standard 资源,通常比先写 Ingress 再安排二次迁移更省协调成本。

如果现有 Ingress 只承担稳定的 HTTP/HTTPS 路由,控制器私有注解很多,且近期没有入口改造窗口,则没有必要因为“API 进入新阶段”而强制重写。可以先完成注解盘点、控制器选型和一条低风险域名的并行验证。Ingress 继续可用,但新能力和新团队协作不要再继续堆叠到冻结的 Ingress API 上。

迁移影响速查

关注点迁移后的判断建议动作
已有 Ingress可继续运行,API 冻结,不等于立即删除盘点并按业务单元规划
HTTP/HTTPS 标准路由优先映射到 Gateway 与 HTTPRoute先并行验证,再逐域名切换
TCP/UDP 入口v1.6 的 TCPRoute、UDPRoute 进入 Standard确认控制器 conformance 与监听器配置
控制器私有注解可能映射到字段、策略或无等价物建立注解迁移矩阵,不要静默丢弃
实验资源新的实验资源使用独立 x-k8s API 组记录实验版本和退出方案
组织协作入口和路由可由不同角色管理同步 RBAC、审计和回退手册

相关问题

Ingress 会被 Kubernetes 立即移除吗?

不会。Ingress API 已冻结,但 Kubernetes 文档说明没有移除计划。迁移的主要原因是 Gateway API 的新能力、职责模型和扩展方式,而不是旧对象突然失效。

Gateway API 升级是否必须先升级 Kubernetes 集群?

不一定。Gateway API 项目说明其版本与 Kubernetes 集群版本解耦,但仍需满足所选控制器和 CRD 的支持要求,不能只看集群版本。

Ingress 到 Gateway API 能不能完全自动转换?

可以用 ingress2gateway 等工具辅助生成资源,但工具主要解决结构转换。控制器私有注解、策略、证书权限、外部地址和回滚仍需人工确认。

新项目应该直接使用实验资源吗?

除非确实需要实验能力并接受其变化成本,否则优先使用 Standard 资源。实验资源应记录 API 组、控制器支持范围和未来升级路径。

参考资料

Kubernetes Gateway API v1.6:https://kubernetes.io/blog/2026/08/03/gateway-api-v1-6-release/

Ingress 迁移指南:https://gateway-api.sigs.k8s.io/guides/getting-started/migrating-from-ingress/

Kubernetes Gateway API 概念:https://kubernetes.io/docs/concepts/services-networking/gateway/

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
RAG 怎样按文档版本过滤检索候选RAG 怎样按文档版本过滤检索候选
上一篇
RAG 怎样按文档版本过滤检索候选
AI evaluation 怎样区分事实性与格式性评分
下一篇
AI evaluation 怎样区分事实性与格式性评分
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之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模型性能。
    662次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    682次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    727次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    696次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    528次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码