Component architecture
下图展示了构成 kgateway 控制面与数据面的不同组件。

这些组件协同工作,将网关相关的自定义资源(gateway custom resources)转化为网关代理(gateway proxy)的配置。网关代理的配置决定了网关如何处理并转发你的应用流量。kgateway当前支持两种代理:
- Envoy-based kgateway proxy 和 agentgateway proxy
- Kgateway Pod中的配置(config)和密钥(secret)watcher组件,会监控集群中的 Kubernetes Gateway API和kgateway资源,例如 Gateways、HTTPRoutes 或 TrafficPolicies。
- 当配置或密钥watcher检测到新的或被更新的资源时,它会将这些资源的配置信息发送给 kgateway 的翻译引擎(translation engine)。
- 翻译引擎会把这些 Kubernetes Gateway API 和 kgateway 资源转换成网关代理(gateway proxy)的配置。所有代理配置会被整合成一个 xDS 快照(xDS snapshot)。
- Reporter(状态上报器)会接收翻译器对每个资源的状态报告。
- Reporter 会把资源的状态写回到 etcd 数据存储中。
- 这个xDS快照会提供给 kgateway pod 内的 xDS 服务器组件。
- 集群中的 gateway proxies 会从 kgateway 的 xDS 服务器拉取最新的网关代理配置。
- 客户端会向网关代理所暴露的IP地址或主机名发送请求。
- 网关代理使用xDS快照中提供的监听器(listener)配置和路由(route)配置,来执行路由决策,并将请求转发到集群内的目标服务。
Config watcher
配置watcher是 kgateway控制面的组成部分,用于监视集群中新增或更新的 Kubernetes Gateway API和kgateway资源,例如Gateways、HTTPRoutes 和 Backends。
当配置watcher检测到这些资源有新增或变更时,它会将对应的 Kubernetes 配置发送给 kgateway 的翻译引擎。
Secret watcher
密钥watcher是 kgateway 控制面的一部分,用于监视密钥存储(secret store)中密钥的更新。
例如,你可能使用 Kubernetes Secret 来存储 Backend 访问 AWS Lambda 所需要的AWS access key 和 secret key 凭据。此外,你还可以配置 kgateway 去监控其他类型的密钥存储。
Translation engine
kgateway 的翻译引擎会接收你创建或更新的所有Kubernetes Gateway API、Kubernetes API以及 kgateway资源的快照。每当有更新时,翻译引擎都会启动一个新的翻译循环,将这些资源转换成有效的gateway proxy配置。最终生成的代理配置会被存储在一个xDS snapshot(xDS 快照) 中。
下图展示了不同网关代理在一次翻译周期中的各个阶段。
Envoy-Based Kgateway Proxy

1. 翻译周期开始时,系统会首先根据所有已配置的Backend和Kubernetes Service资源生成Envoy 的clusters。
在这个上下文中,cluster指一组相似的主机组成的集合。每个 Backend 都有一个 type,用于决定它应该如何被处理。正确配置的 Backends 和 Kubernetes Services 会被转换成与其类型对应的 Envoy clusters,并包含相关的 cluster 元数据。
2. 下一步是处理每个 Backend 上定义的 functions(函数)。
在此步骤中,会把每个函数所需的 cluster 元数据加入到对应的 Backend 里。这些函数相关的元数据会在之后由特定的 Envoy 过滤器(function-specific Envoy filters)进行处理。
3. 接下来会生成所有 Envoy routes(路由)。
路由会根据 HTTPRoute和TrafficPolicy 资源中定义的每一条路由规则生成。
当所有路由创建完成后:
- 翻译引擎会处理并汇总所有 HTTPListenerPolicy 资源
- 将其转换为 Envoy 的 virtual hosts
- 并将它们加入新的 Envoy HTTP Connection Manager 配置
4. 查询过滤器插件并生成过滤器配置。
插件会提供对应的过滤器配置,用来生成:
- HTTP Filters(HTTP 过滤器)
- TCP Filters(TCP 过滤器)
这些过滤器会被加入到 Envoy listeners 中。
5. 最终,系统会构建一个 xDS snapshot(xDS 配置快照)。
该快照由以下四类资源组成:
- EDS(Endpoints)终端节点
- CDS(Clusters)集群
- RDS(Route Configs)路由配置
- LDS(Listeners)监听器
这个 xDS 快照会被发送给 kgateway 的 xDS server。集群中的 gateway proxies 会监控 xDS server 的变化。一旦检测到新的配置,代理会从 xDS server 拉取最新配置并应用。
Agentgateway proxy

1.当为 kgateway 启用 agentgateway 功能时,agentgateway syncer 组件会作为控制面的一部分被创建。
2.agentgateway syncer会设置初始配置,其中包括agentgateway的GatewayClass名称,Gateways可以使用该名称自动创建agentgateway proxies。agentgateway syncer还会基于集群中的 Gateway API 和 kgateway 资源构建初始的 krt collections。
3.翻译周期开始时,会收集用于创建agentgateway proxy配置所需的所有资源。这些资源集合包括:
- Kubernetes、Gateway API和kgateway资源的核心集合,这些资源在集群中定义,包括 namespaces、services、gateways、routes、policies、backends,以及用于 AI、MCP 和 A2A 类型 backends 的插件。
- agentgateway 数据面资源的构建,包括从核心集合翻译而来的信息,并转换成 agentgateway 所期望的格式,例如 agentgateway 的 bind、port、listener、route、backend、target 和 policy 配置。
- 服务和工作负载的地址集合,这些地址会用于服务发现和端点解析。
- 翻译顺序会确保依赖关系被正确处理:binds → listeners → routes → policies, backends 和 addresses 会单独处理,然后加入到最终配置中。
4.翻译过程的下一步是构建 xDS 集合。该步骤会将所有 agentgateway 数据面资源的配置与地址集合合并,为每一个 agentgateway proxy 创建配置。它还会为这些资源生成状态报告、跟踪已附加的 routes,并确定已附加的 policies。
5.最后,来自资源集合和 xDS 集合的信息会被转换成 agentgateway proxy 配置的 xDS snapshot。该快照会被发送到 xDS server。集群中的 agentgateway proxies 会监听 xDS server 是否有新配置。在检测到新配置后,agentgateway proxy 会通过 gRPC 拉取更新的配置。
Reporter
Reporter 组件会接收翻译引擎处理过的每一个 kgateway 资源的验证报告。任何无效的配置都会通过 Kubernetes 的存储层反馈给用户。无效的资源会被标记为“rejected(拒绝)”,同时错误信息会记录在资源的配置中。
xDS server
xDS Server会将生成的 xDS 快照发送给数据面中的 gateway proxies。
基于Envoy的kgateway代理
Envoy 代理会根据新的EDS、CDS、RDS 和 LDS 配置更新自身,以达到系统期望的状态。
agentgateway 代理
agentgateway代理会根据专属于agentgateway 的配置进行更新,其中包括对MCP和 A2A 协议的支持,从而使代理达到期望状态。
