10-Gateway API
Gateway API概念引入在文章 03 中你学了 Ingress——K8s 的大门保安负责根据域名和路径把流量分发到不同 Service。但 Ingress 有几个痛点表达能力弱只支持 HTTP 的 host path 匹配想做 header 匹配、权重分流不行配置不标准每个 Ingress Controller 用不同的 annotation换个 Controller 就要重写配置角色不分离运维管网关基础设施开发管路由规则但 Ingress 把两者混在一个资源里Gateway API 就是为了解决这些问题而生的新一代标准。Gateway API新GatewayClass基础设施类型Gateway网关实例HTTPRoute路由规则Ingress旧Ingress一个资源管所有角色分离运维管 Gateway开发管 HTTPRoute原理讲解Gateway API 的三个核心资源资源谁管作用类比GatewayClass基础设施提供商定义网关类型如 nginx、envoy“我要买什么型号的门”Gateway集群运维创建网关实例定义监听器和端口“把门装在哪里开几个口”HTTPRoute应用开发者定义路由规则路径、header、权重“进哪个门走哪条路”路由层开发管基础设施层运维管GatewayClass: nginxGateway: my-gateway监听 :80 和 :443HTTPRoute: web-route/ → web-svcHTTPRoute: api-route/api → api-svcHTTPRoute: canary-route/v2 → v2-svc (20%)/v2 → v1-svc (80%)Ingress vs Gateway API 对比维度IngressGateway API标准化❌ 各 Controller 用不同 annotation✅ 统一标准跨 Controller 兼容路由能力仅 host pathhost path header query method流量分割❌ 不支持✅ 权重分流金丝雀发布角色分离❌ 一个资源✅ 三层分离Class/Gateway/Route协议支持HTTP/HTTPSHTTP/HTTPS/TCP/TLS/gRPC状态稳定但功能受限GA正式可用持续演进HTTPRoute 的强大能力apiVersion:gateway.networking.k8s.io/v1kind:HTTPRoutemetadata:name:advanced-routespec:parentRefs:-name:my-gatewaysectionName:httphostnames:-app.example.comrules:# 规则 1按 header 路由-matches:-headers:-name:x-versionvalue:v2backendRefs:-name:v2-svcport:80# 规则 2按权重分流金丝雀发布-matches:-path:value:/apibackendRefs:-name:api-v1port:80weight:90# 90% 流量到 v1-name:api-v2port:80weight:10# 10% 流量到 v2# 规则 3请求重定向-matches:-path:value:/old-pathfilters:-type:RequestRedirectrequestRedirect:path:type:ReplaceFullPathreplaceFullPath:/new-path迁移路径大多数 Ingress ControllerNginx Ingress、Traefik、Kong已经支持 Gateway API。迁移步骤安装支持 Gateway API 的 Controller创建 GatewayClass 和 Gateway把 Ingress 规则逐一转换为 HTTPRoute验证无误后删除旧 Ingress动手实验配套实验位于docs/labs/beginner/gateway-api/⚠️ 本实验安装 Gateway API CRD资源定义但不安装 Gateway Controller需要额外网络下载镜像。学习重点是资源结构和角色分离——Gateway 和 HTTPRoute 的定义方式、与 Ingress 的对比。本实验用 Gateway API 重新实现 Ingress 的路由规则。步骤 1安装 CRD 并创建后端服务cddocs/labs/beginner/gateway-apibashsetup.sh步骤 2认识 Gateway 资源# 查看已创建的 Gatewaykubectl get gateway# 查看 Gateway 的 YAML 定义kubectl describe gateway my-gatewaycatmanifests/gateway.yaml解读gatewayClassName: nginx指定用哪种网关实现listeners定义监听的端口和协议。这个资源由运维管理——决定网关实例的规格。步骤 3认识 HTTPRoute 资源# 查看已创建的 HTTPRoutekubectl get httproute# 查看路由规则kubectl describe httproute app-routecatmanifests/httproute.yaml解读/api → api:5678/ → web:80。这个资源由开发管理——决定路由规则不需要关心网关是用 nginx 还是 envoy 实现的。步骤 4验证后端服务# 通过 port-forward 直接访问后端无需网关控制器kubectl port-forward svc/web8080:80curl-slocalhost:8080|head-5kill%12/dev/null kubectl port-forward svc/api8081:5678curl-slocalhost:8081kill%12/dev/null 在完整部署中Gateway Controller 会自动配置代理你不需要手动 port-forward。这里直接访问后端是为了验证服务可用。步骤 5理解流量分割金丝雀发布# 查看权重分流路由定义catmanifests/canary-route.yaml# 创建资源没有 Controller 不会有实际分流效果但能学习 API 结构kubectl apply-fmanifests/canary-route.yaml kubectl get httproute canary-route-oyaml|grep-A10backendRefs关键字段weight: 80和weight: 20——声明式地定义流量比例不需要 annotation。步骤 6清理bashteardown.sh自检问题Gateway API 的三层结构GatewayClass / Gateway / HTTPRoute分别由谁管理查看答案 **GatewayClass** 由基础设施提供商定义如 Nginx 提供 nginx GatewayClass。**Gateway** 由集群运维管理——决定在哪里创建网关实例、监听哪些端口。**HTTPRoute** 由应用开发者管理——定义具体的路由规则。这种分离让运维和开发各司其职互不干扰。Ingress 的 annotation 有什么问题Gateway API 怎么解决的查看答案 Ingress 的 annotation 不是标准 API不同 ControllerNginx Ingress、Traefik、Kong用不同的 annotation 实现相同功能。换 Controller 就要改 annotation。Gateway API 是 K8s 官方标准 API所有兼容的 Controller 都支持相同的 HTTPRoute 语法换 Controller 不需要改路由配置。你的团队要做一个灰度发布10% 流量到新版本用 Ingress 和 Gateway API 分别怎么实现查看答案 **Ingress**需要用 Controller 特定的 annotation 实现分流如 Nginx Ingress 的 canary 注解不可移植。**Gateway API**直接在 HTTPRoute 的 backendRefs 中设置 weight: 90 和 weight: 10标准 API任何兼容的 Controller 都支持。下一步Gateway API 是 Ingress 的未来。你的基础功已经扎实了接下来进入进阶实战阶段恭喜你已经完成了 K8s Guide 初学者轨道的全部 11 篇文章。从零基础到能独立部署、排查、运维 K8s 应用——你已经掌握了核心知识。接下来的面试轨道会帮你把这些知识转化为 Offer。本文来自 K8s Guide—— 开源免费的 Kubernetes 中文学习指南️ 初学者轨道 面试轨道从零基础到拿 Offer 一站式覆盖 每篇文章配套 Kind 实验脚本本地一键运行 本文源码docs/beginner/20-gateway-api.md⭐如果对你有帮助欢迎 Stargithub.com/callmebg/k8s-guide

相关新闻

高效、免费、开源:GetQzonehistory让QQ空间历史说说备份变得简单

高效、免费、开源:GetQzonehistory让QQ空间历史说说备份变得简单

高效、免费、开源:GetQzonehistory让QQ空间历史说说备份变得简单 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年,在QQ空间里留下的青春印记吗&…

2026/11/2 15:40:00 阅读更多 →
Wayfinder Router:AI应用成本与性能优化的智能路由解决方案

Wayfinder Router:AI应用成本与性能优化的智能路由解决方案

如果你正在构建AI应用,可能会遇到这样的困境:调用云端大模型API成本高、响应慢,而本地部署的模型虽然成本可控但能力有限。如何在保证服务质量的同时控制成本?Wayfinder Router提供了一个全新的解决方案——它不是在模型层面做选择…

2026/10/25 16:36:41 阅读更多 →
Python核心知识体系思维导图

Python核心知识体系思维导图

总览基础知识1基础知识2数据类型序列字符串列表/元组字典集合条件/循环文件对象错误/异常函数 1&2模块面向对象编程

2026/11/3 12:15:13 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻