Gateway API 的核心组件与作用

第一次听到 Gateway API,很多人都会下意识问一句:"这不就是 Ingress 2.0 吗?"

表面上看确实都是"把外部流量带进集群、再转到 Service",但 Gateway API 真想解决的不是"能不能转发",而是入口治理怎么分工、权限怎么划分、路由能力怎么标准化。

你可以把它当成一次"把门口这摊事理顺"的改造:

谁来建门?门开几个口?谁能改路由?跨团队引用资源要不要审批?这些在 Ingress 时代不是做不到,而是做起来经常靠注解、靠约定、靠人肉协商------一忙起来就乱。Gateway API 的价值就在于:把这些规则拆开写进标准里。

先把整体思路说清楚:Gateway API 想把"门"和"路"分开

Ingress 往往是"一个对象塞很多事":入口、TLS、路由、扩展能力全堆在一起。问题是什么?

平台团队想稳定控制入口,但业务团队又想快速改路由;权限边界一模糊,改个路径都可能影响全站。你说这能不紧张吗?

Gateway API 的设计非常明确:

入口网关是入口网关(平台管),路由规则是路由规则(业务管),跨命名空间引用要授权(谁都别越界)。

思路清楚了,组件也就顺理成章。

GatewayClass:告诉集群"用哪一种网关实现"

GatewayClass 更像"选型声明"。它会绑定具体的 Controller(比如某个网关控制器或云厂商实现),意思是:

以后这种网关由谁来负责落地、支持哪些能力、按什么方式创建。

通常这东西是平台团队管的。原因也很现实:网关实现选错了,影响的是整个集群入口,不是某一个业务的事。谁会让业务同学随手换"公司大门"的施工队呢?

Gateway:真正的"入口网关实例",负责接流量

Gateway 是实际干活的入口网关对象。它会定义:

  • 监听哪些端口(80/443?还是其他?)

  • 用什么协议(HTTP/HTTPS/TCP/TLS...)

  • TLS 证书怎么配

  • 哪些 Route 可以挂到我这个网关上(也就是谁有资格往这里加路由)

你可以把 Gateway 想成"门"本身:门开在哪、开几扇、怎么安保、谁能进来修改导向规则------这些都在 Gateway 的职责范围内。

Route:决定"流量怎么走",这才是业务最常改的东西

如果说 Gateway 是门,那 Route 就是门里面的"导向标识和车道规划"。Gateway API 把路由按协议拆成一组对象,用哪个协议就用哪个 Route:

  • HTTPRoute:最常用,按 Host/Path/Header 等做路由、重写、重定向、灰度分流

  • GRPCRoute:面向 gRPC 的路由(按服务/方法等维度)

  • TLSRoute:基于 SNI 的 TLS 路由

  • TCPRoute / UDPRoute:四层转发(看具体实现支持)

业务侧最爽的点在这里:

你只需要在自己的 namespace 里写 Route,把流量导到自己的 Service 就行,不用天天碰"门"的配置。想灰度?想按 header 分流?想把 /v1 和 /v2 拆开?路由层搞定。

ReferenceGrant:跨命名空间引用的"授权书",把边界讲清楚

这可能是 Gateway API 最容易被忽视、但又特别关键的一块。现实里经常出现这种情况:

  • 网关在 infra namespace

  • 业务在 app namespace

  • TLS Secret、后端 Service、或某些资源又在别的 namespace

那问题来了:你能不能随便引用别人的资源?

Ingress 时代很多时候靠 controller 自己的规则或者"大家别乱来"的约定,真出事了就扯皮。

Gateway API 直接把规则标准化:跨命名空间引用要有 ReferenceGrant 授权。

它就像一张"盖章许可":允许哪个 namespace 的 Route 引用哪个 namespace 的资源(Service/Secret 等)。边界写清楚了,团队协作就没那么互相猜了。

把它们串起来:一条链路就能讲明白

Gateway API 的核心关系可以这样理解:

  • GatewayClass:选用哪种网关实现(谁来实现)

  • Gateway:网关入口本体(门怎么开)

  • Route:流量规则(车怎么走)

  • ReferenceGrant:跨 namespace 引用授权(能不能用别人的资源)

更直观一点就是:

先选网关实现 → 建一个入口网关 → 业务把路由规则挂上去 → 跨命名空间引用需要授权。

总而言之:Gateway API 强在"分工明确"

Gateway API 真正厉害的地方,不是让你写更多 YAML,而是把入口治理拆得更工程化:

  • 平台团队管"门"(GatewayClass/Gateway),保证稳定与安全

  • 业务团队管"路由"(Route),保证迭代速度

  • 跨团队资源引用有"授权机制"(ReferenceGrant),避免越界

你想想,入口流量就是集群门面,权限边界不清晰、规则不标准化,迟早会出事。Gateway API 把这些说清楚、写进标准里,这才是它存在的意义。

相关推荐
Wyawsl2 小时前
Linux系统安全
linux·运维·系统安全
liulilittle2 小时前
MIMT审计技术:TLS信任链的脆弱性与资本主义商业逻辑下的必然
网络·c++·tcp/ip·tls·mimt
酱紫学Java2 小时前
AI 提示词注入 (Prompt Injection)
网络·人工智能·安全
一只鹿鹿鹿2 小时前
研发中心数据安全管理规定(文件)
java·运维·开发语言·数据库·后端
劲墨难解苍生苦2 小时前
docker 和k8s 环境下达梦数据库开启ssl连接配置流程
数据库·docker·kubernetes
青灯文案12 小时前
Linux 常用目录及其用途
linux·运维·服务器
芒果披萨2 小时前
Linux磁盘挂载
linux·运维·服务器
无级程序员2 小时前
k8s部署nacos 3.1.1服务,java.net.UnknownHostException问题终极解决方案
java·nacos·kubernetes
qq_297574672 小时前
K8s系列第二篇:CentOS7/Ubuntu 一键搭建 K8s 集群(kubeadm 完整版)
ubuntu·容器·kubernetes