跳转到内容

实验功能

Nantian Gateway 提供一些默认关闭的实验功能。这些 API 可用于测试 AI 路由、token policy、Wasm 扩展和实验性 Gateway API policy,但它们的 schema 和运行时行为可能变化。

PlaneHelm valueDefaultControls
Control planecontrolplane.config.features.enableExperimentalGatewayfalse在控制面 scheme 中注册实验性 Gateway policy 相关类型,包括 BackendLBPolicyTokenPolicyWasmPlugin 支持。
Control planecontrolplane.config.features.enableAiGatewayfalse在控制面 scheme 中注册 AIService 支持。
Data planedataplane.config.experimental.enableExperimentalGatewayfalse开启数据面中已实现的实验性 gateway 运行时行为。
Data planedataplane.config.experimental.enableAiGatewayfalse开启数据面 AI gateway 运行时行为。

控制面 flag 决定 manager 能注册和 reconcile 哪些资源。数据面 flag 决定快照到达后哪些实验性运行时行为会启用。

创建 experimental-values.yaml

controlplane:
config:
features:
enableExperimentalGateway: true
enableAiGateway: true
dataplane:
config:
experimental:
enableExperimentalGateway: true
enableAiGateway: true

安装或升级时应用:

Terminal window
helm upgrade --install nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw \
--create-namespace \
-f experimental-values.yaml

重启后的 Pod 会读取渲染后的 ConfigMap。rollout 后请查看日志,确认两个平面都以预期配置启动。

Kustomize 用户应编辑或替换 base 清单生成的 ConfigMap。gateway/deploy/kubernetes/base/kustomization.yaml 使用:

  • gateway/configs/controlplane/config.yaml
  • gateway/configs/dataplane/config.yaml

数据面仓库也维护运行时默认配置:dataplane/configs/dataplane/config.yaml;更新数据面示例时需要保持一致。

控制面片段:

features:
enableExperimentalGateway: true
enableAiGateway: true

数据面片段:

experimental:
enableExperimentalGateway: true
enableAiGateway: true

优先使用 overlay,不要直接在 base 文件里做不可追踪的修改。

核心资源如 GatewayHTTPRoute 需要标准 Gateway API CRD。实验资源还需要对应 CRD:

  • 用于 BackendLBPolicy 的 Gateway API experimental CRD。
  • gateway base manifest 中的 Nantian CRD:
    • aiservices.gateway.nantian.dev
    • tokenpolicies.gateway.nantian.dev
    • wasmplugins.gateway.nantian.dev

Nantian CRD 是 gateway.nantian.dev/v1alpha1 下的 namespaced 扩展资源。BackendLBPolicygateway.networking.k8s.io/v1alpha2 下的 Gateway API experimental 资源。

先检查 CRD:

Terminal window
kubectl get crd aiservices.gateway.nantian.dev
kubectl get crd tokenpolicies.gateway.nantian.dev
kubectl get crd wasmplugins.gateway.nantian.dev
kubectl get crd backendlbpolicies.gateway.networking.k8s.io

再通过日志检查运行配置:

Terminal window
kubectl logs -n nantian-gw deploy/nantian-gw-controlplane --tail=100
kubectl logs -n nantian-gw deploy/nantian-gw-dataplane --tail=100

缺少 CRD 会导致资源创建失败。控制面 feature flag 关闭时,资源可能不会注册到 manager scheme。数据面 flag 关闭时,即使控制面接受对象,也可能不会启用对应实验性运行时行为。

CRD 和 flag 准备好后,请创建符合当前 schema 的资源。AIServiceTokenPolicyWasmPluginBackendLBPolicy 示例见自定义与实验资源