Kgateway是一个功能丰富、快速且灵活的 Kubernetes 原生 ingress controller 和下一代API gateway,它建立在Envoy proxy和 Kubernetes Gateway API 之上。Kgateway 包括完整的Kubernetes ingress功能,提供自己的控制平面,使用Kubernetes Gateway API作为其配置语言,使用Envoy作为proxy server.
任何 Ingress 解决方案通常包含三个主要组件:
- 控制面(control plane)
- 数据面(data plane)
- 配置语言(configuration language)
Kubernetes Gateway API是一个旨在标准化配置语言的项目,它将替代传统的 Ingress API,并以可扩展的 API 作为新的标准。因此,各类Ingress项目会在其数据面上表现出差异 —— 有些方案基于 Envoy、HAProxy、NGINX、Traefik 等构建 —— 以及在控制面的性能、可扩展性和特性 上各不相同。
What is an API gateway?
API网关是一个为API流量提供集中式网关功能的服务。随着微服务架构在2005-2015年快速流行,这一概念开始兴起。早期的供应商包括3scale、WSO2和Apigee,它们主要面向基于Java的后端。随着Kubernetes的普及,出现了需要与Kubernetes集成的API网关能力的需求。这推动了Gloo(kgateway 的原始名称) 的推出。
在一些示例中,你需要提供API key来访问服务 ,这是识别用户的一种方式,API可以基于此进行决策。
API网关可能执行的一些功能包括:
- 路由与聚合:类似于 Ingress,将来自不同后端服务(包括 serverless 函数)的 API 统一发布到单一端点、通过单一API key访问。
- 负载均衡:基于负载将请求分发到后端服务。
- 限流:根据身份、负载或成本等参数限制某些 API 的调用次数。
- 安全功能:提供身份认证、授权,以及Web应用防火墙(WAF)。
- 日志与监控:跟踪和展示使用情况,以支持 API 管理、调试和计费等场景。
Are ingresses API gateways?
尽管Ingress提供了一些必要能力,但仅有Ingress功能并不足以称为API 网关。传统上,Ingress主要负责路由与聚合,而Kubernetes本身提供负载均衡。如果你听到 “application gateway” 一词,它通常更多是服务于网站UI的网关。虽然API也是Web流量,并且经常通过Ingress发布,但一个面向UI的应用网关通常不具备API网关所要求的完整功能集合。
What is the Kubernetes Gateway API?
Kubernetes Gateway API是Kubernetes中用于流量管理的通用、可扩展标准。它正在迅速成为云原生网络中定义路由与策略的标准接口,解决了旧Ingress API诸多不足,并统一了实践中积累的最佳实践。
Kgateway完全符合Kubernetes Gateway API的规范,并通过自定义扩展API(如 TrafficPolicies、ListenerPolicies、Backends)扩展其功能。
这些自定义资源可帮助你集中配置HTTPRoute或Gateway Listener的高级流量管理、安全和可用性策略。
Is the Gateway API an API gateway?
不是。但这也正说明了“命名是一件困难的事”!Gateway API是一种用于对Ingress或API 网关进行编程的API。
Extensions
在Kubernetes Gateway API的基础上,Kgateway提供了以下扩展,用于配置高级的路由、安全性与可用性(弹性)能力。

Default gateway proxy setup
当你创建一个Kubernetes Gateway资源时,Kgateway会自动启动、初始化并管理网关代理(gateway proxy)的部署。
为实现这一点,Kgateway会结合多个Kgateway和Kubernetes的资源来协同工作,例如:
- GatewayClass
- GatewayParameters
- gateway proxy template
这些资源共同决定每个代理在启动时所使用的Envoy配置,并以此完成代理实例的初始化。
