跳转到内容

什么是 Nantian Gateway

Nantian Gateway 是 Kubernetes Gateway API 的一个实现,它为云原生场景提供高性能的南北向流量入口、流量治理和 API 网关能力。项目基于 Gateway API v1.5.1 规范,声明支持 55 个特性,覆盖 HTTP、gRPC、TCP、UDP 和 TLS 路由。

和其他网关实现相比,Nantian Gateway 有两个明显不同的设计选择。第一个是控制面与数据面分离架构(split-plane architecture):控制面用 Go 编写,数据面用 Rust 编写,两者之间通过 gRPC 双向 xDS 流通信。第二个是AI 网关能力作为一等公民直接内置在数据面中,而不是挂在外部组件上。

简单来说,Nantian Gateway 监听 Kubernetes 集群中的 Gateway API 资源,比如 GatewayHTTPRouteGRPCRouteTCPRouteUDPRouteTLSRoute。Go 控制面把这些资源翻译成内部 IR(中间表示),然后通过 gRPC/xDS 流推送到 Rust 数据面代理。

数据面负责实际的请求处理:TLS 拆解、HTTP 路由、请求头修改、流量拆分、限流、AI 协议转换等。控制面负责翻译和分发,数据面负责执行,两者各司其职,独立扩缩。

所有路由配置都通过标准的 Gateway API 资源完成。你的 HTTPRoute 配置写法和其他兼容实现完全一样,这意味着迁移成本低,学习曲线平缓,API 界面也足够熟悉。

控制面不内嵌代理。配置通过 gRPC 双向流(xDS 协议)推送到数据面。这样做的好处很明显:数据面保持轻量,两个平面可以独立扩缩,运维边界也更清晰。

Nantian Gateway 自带四个自定义 CRD,扩展了 Gateway API 的能力:

  • AIService: 管理 AI 模型提供方的连接,包括认证、模型路由和提供方配置
  • TokenPolicy: 基于 token 数量对 AI API 调用做限流和配额控制
  • WasmPlugin: 在监听器或路由级别绑定 Wasm 扩展,注入自定义请求/响应处理逻辑
  • BackendLBPolicy: 配置后端负载均衡和会话保持策略

这些 CRD 让你用同样的 Kubernetes 原生工作流来管理 AI 流量和自定义扩展,不必额外搭建独立服务。

Rust 数据面内嵌了一个 AI 网关模块,负责处理多 AI 提供方的协议适配。支持 OpenAI、Anthropic 和 Ollama 三种格式,能力包括 token 计数、API 密钥管理、限流、PII 脱敏和模型 A/B 测试。所有这些都在代理进程内部完成,不需要额外的网络跳转。

基于 wasmtime 的插件引擎运行在数据面层面,允许你在请求和响应的生命周期钩子中注入自定义逻辑。插件以标准 .wasm 模块的形式分发,通过 WasmPlugin CRD 管理。

Nantian Gateway 的功能覆盖路由、流量治理、安全、可观测性和扩展性五个维度。

  • HTTP 路由:支持路径、请求头、查询参数和方法匹配
  • gRPC 路由:支持命名路由规则,精确到方法级别
  • TCP 和 UDP 路由:覆盖非 HTTP 负载
  • TLS 透传和拆解:支持同一监听器上的混合模式
  • Host 重写路径重写/重定向
  • 支持 301、302、303、307、308 状态码重定向
  • 请求镜像:按百分比将请求复制到多个后端
  • 后端超时:支持请求级和后端级超时控制
  • CORS 配置:在路由级别配置跨域策略
  • 请求头修改:同时支持请求和响应方向的头部变更
  • 后端协议支持:HTTP/1.1、HTTP/2(h2c)、gRPC、WebSocket
  • 后端 TLS 策略:支持 SAN 校验和客户端证书
  • 前端 TLS:支持客户端证书校验和非安全回退
  • ReferenceGrant:允许跨命名空间引用后端
  • 监听器隔离:防止跨监听器请求泄漏

Nantian Gateway 支持 Gateway API Mesh 资源,包括:

  • 基于集群 IP 匹配的消费者路由
  • Mesh 级别的 HTTP 路由操作(请求头修改、路径重写、重定向)
  • 无 Sidecar 的网格配置,通过 Gateway API Mesh 模型实现
  • 控制面和数据面均暴露 Prometheus 指标
  • Grafana 仪表盘模板,提供集群级可见性
  • Admin API:运行时诊断和配置检查
  • 健康检查和就绪探针:支持 Kubernetes 原生的存活检测
  • Wasm 插件系统:自定义请求/响应钩子
  • AI 网关模块:多提供方 AI 流量管理
  • 扩展过滤器:自定义 Gateway API 过滤器集成
┌──────────────────────────────────────────────────────┐
│ Kubernetes 集群 │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ Gateway │ │ HTTPRoute│ │ EndpointSlice │ │
│ └────┬─────┘ └────┬─────┘ └────────┬──────────┘ │
│ └──────────────┼───────────────┘ │
│ │ watch │
│ ┌───────┴────────┐ │
│ │ Nantian GW │ │
│ │ Control Plane │ │
│ │ (Go) │ ── gRPC/xDS ──► │
│ └───────┬────────┘ │
│ │ │
│ ┌───────┴────────┐ │
│ │ Data Plane │ │
│ │ (Rust) │──────────────────── │
│ └────────────────┘ │
└──────────────────────────────────────────────────────┘
┌──────────────────┐
│ 后端服务 (Pod) │
└──────────────────┘