跳转到内容

Gateway API 资源

Nantian Gateway 实现了 Kubernetes Gateway API v1.5.1 规范,声明支持 55 个特性。本页列出所有支持的资源类型、核心字段和特性覆盖情况。

资源API 版本用途
GatewayClassgateway.networking.k8s.io/v1定义网关实现类型,由控制面认领
Gatewaygateway.networking.k8s.io/v1定义监听器,配置端口、协议和 TLS
HTTPRoutegateway.networking.k8s.io/v1HTTP 和 HTTPS 流量路由
GRPCRoutegateway.networking.k8s.io/v1gRPC 流量路由,支持方法级匹配
TCPRoutegateway.networking.k8s.io/v1alpha2TCP 流量路由
UDPRoutegateway.networking.k8s.io/v1alpha2UDP 流量路由
TLSRoutegateway.networking.k8s.io/v1alpha2TLS 透传路由
BackendTLSPolicygateway.networking.k8s.io/v1alpha3后端 TLS 验证策略
ReferenceGrantgateway.networking.k8s.io/v1beta1跨命名空间引用授权

GatewayClass 是集群级别的资源,定义网关的实现类型。Nantian Gateway 的控制面会监听并认领 spec.controllerNamegateway.networking.k8s.io/nantian-gw 的 GatewayClass。

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: nantian-gw
spec:
controllerName: gateway.networking.k8s.io/nantian-gw

一旦 GatewayClass 被控制面认领,status.conditions 中会显示 Accepted=True,表示该 GatewayClass 已就绪,引用它的 Gateway 资源可以被处理。

Gateway 定义一组监听器,每个监听器指定端口、协议和可选的 TLS 配置。路由资源通过 parentRefs 字段绑定到特定的 Gateway 和监听器上。

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: example-gateway
namespace: default
spec:
gatewayClassName: nantian-gw
listeners:
- name: http
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: Same
- name: https
protocol: HTTPS
port: 443
hostname: "*.example.com"
tls:
mode: Terminate
certificateRefs:
- name: example-tls
allowedRoutes:
namespaces:
from: All
协议说明
HTTPHTTP/1.1 和 HTTP/2(h2c)
HTTPSTLS 终结 + HTTP/1.1 和 HTTP/2
TLSTLS 透传模式
TCPTCP 流代理
UDPUDP 流代理
模式说明
Terminate在网关层终结 TLS,使用证书引用中的密钥
PassthroughTLS 流量透传到后端,网关不解密

HTTPRoute 是使用最频繁的路由资源,负责 HTTP 和 HTTPS 流量的路由决策。

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: example-route
namespace: default
spec:
parentRefs:
- name: example-gateway
hostnames:
- "api.example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /v1
headers:
- name: x-version
value: v2
method: GET
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
add:
- name: x-gateway
value: nantian-gw
- type: URLRewrite
urlRewrite:
hostname: internal.example.com
path:
type: ReplacePrefixMatch
replacePrefixMatch: /api
backendRefs:
- name: backend-v1
port: 8080
weight: 80
- name: backend-v2
port: 8080
weight: 20
timeouts:
request: 30s
backendRequest: 10s
匹配类型说明
path路径匹配,支持 ExactPathPrefixRegularExpression
headers请求头匹配,支持 ExactRegularExpression
queryParams查询参数匹配,支持 ExactRegularExpression
methodHTTP 方法匹配(GET、POST、PUT、DELETE 等)
过滤器说明
RequestHeaderModifier修改请求头(添加、设置、删除)
ResponseHeaderModifier修改响应头(添加、设置、删除)
URLRewriteURL 重写,支持 hostname 和 path 重写
RequestRedirect请求重定向,支持 301、302、303、307、308 状态码
RequestMirror请求镜像,按百分比将请求复制到其他后端
ExtensionRef自定义扩展过滤器,可引用 Wasm 插件等
协议说明
HTTP/1.1标准 HTTP
HTTP/2 (h2c)明文 HTTP/2
gRPCgRPC over HTTP/2
WebSocketWebSocket 升级

GRPCRoute 提供 gRPC 流量的精确路由,支持服务名和方法名的匹配。

apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:
name: grpc-example
namespace: default
spec:
parentRefs:
- name: example-gateway
hostnames:
- "grpc.example.com"
rules:
- matches:
- method:
service: "example.v1.UserService"
method: "GetUser"
backendRefs:
- name: user-service
port: 50051
- matches:
- method:
service: "example.v1.OrderService"
backendRefs:
- name: order-service
port: 50051
匹配类型说明
service精确匹配 gRPC 服务名
method精确匹配 gRPC 方法名
headers请求头匹配(gRPC metadata)

TCPRouteUDPRoute 处理非 HTTP 的流式流量,匹配规则基于端口号。

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TCPRoute
metadata:
name: tcp-example
namespace: default
spec:
parentRefs:
- name: example-gateway
rules:
- backendRefs:
- name: tcp-backend
port: 9090
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: UDPRoute
metadata:
name: udp-example
namespace: default
spec:
parentRefs:
- name: example-gateway
rules:
- backendRefs:
- name: udp-backend
port: 5353

TLSRoute 处理 TLS 透传流量,基于 SNI 主机名路由。

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TLSRoute
metadata:
name: tls-example
namespace: default
spec:
parentRefs:
- name: example-gateway
hostnames:
- "tls.example.com"
rules:
- backendRefs:
- name: tls-backend
port: 9443

BackendTLSPolicy 定义网关到后端服务的 TLS 连接策略,包括证书验证、SAN 校验和 TLS 版本限制。

apiVersion: gateway.networking.k8s.io/v1alpha3
kind: BackendTLSPolicy
metadata:
name: backend-tls
namespace: default
spec:
targetRefs:
- group: ""
kind: Service
name: secure-backend
validation:
hostname: secure-backend.example.com
caCertificateRefs:
- name: backend-ca
group: ""
kind: ConfigMap
wellKnownCACertificates: "System"

Nantian Gateway 声明支持 Gateway API v1.5.1 规范中的 55 个特性。以下按类别列出关键特性:

特性状态
GatewayClass支持
Gateway支持
HTTPRoute支持
ReferenceGrant支持
特性状态
HTTPRouteQueryParamMatch支持
HTTPRouteMethodMatch支持
HTTPRouteRequestMirror支持
HTTPRouteRequestTimeout支持
HTTPRouteBackendTimeout支持
HTTPRouteParentRefPort支持
HTTPRouteHostRewrite支持
HTTPRoutePathRewrite支持
HTTPRouteRequestRedirect支持
HTTPRouteResponseHeaderModification支持
HTTPRouteBackendProtocolH2C支持
HTTPRouteBackendProtocolWebSocket支持
GRPCRoute支持
GRPCRouteMethodMatch支持
TCPRoute支持
UDPRoute支持
TLSRoute支持
GatewayPort8080支持
GatewayStaticAddresses支持
BackendTLSPolicy支持
GatewayInfrastructurePropagation支持
特性状态
MeshRoute支持
MeshConsumerRoute支持
MeshClusterIPMatching支持