跳转到内容
⚠️ 警告:Nantian Gateway 目前仍处于开发阶段,不适用于生产环境

Helm 安装

Helm chart 是安装 Nantian Gateway 的推荐方式。它把控制面、数据面、dashboard、RBAC、NetworkPolicy、Service、ConfigMap 和默认 GatewayClass 打包到同一个 release。

先安装 Gateway API standard CRD:

Terminal window
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.1/standard-install.yaml
kubectl get crd gateways.gateway.networking.k8s.io

你还需要 Helm 3.x,以及能访问目标集群的 kubectl

使用当前 chart 仓库地址:

Terminal window
helm repo add nantian-gw https://chart.nantian.dev
helm repo update

不要使用旧的复数形式 chart host。

默认搜索只显示稳定 chart 版本。每个 commit 生成的 snapshot chart 会以 0.2.3-<git-sha> 这类 prerelease 版本发布;需要查看或安装这些版本时加上 --devel

Terminal window
helm search repo nantian-gw/nantian-gw --versions --devel
Terminal window
helm install nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw \
--create-namespace

默认 release 会创建命名空间 nantian-gw、2 个控制面副本、2 个数据面副本、1 个 dashboard 副本、安装概述中列出的固定 Service,以及名为 nantian-gwGatewayClass

安装前可以先预览渲染结果:

Terminal window
helm template nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw > rendered.yaml
helm install nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw \
--create-namespace \
--dry-run

以下片段与当前 chart 默认值一致。

featureMode: standard
gatewayAPI:
installCRDs: false
channel: standard

featureMode 控制 Nantian Gateway 自身的运行时功能开关。gatewayAPI.installCRDs 控制本 Chart 是否渲染官方 Gateway API CRD。生产默认值保持 standard 运行时模式,并要求安装网关前已由平台层准备 Gateway API CRD。

global:
imageRegistry: "ghcr.io"
imagePullSecrets: []
commonLabels: {}
gatewayClass:
enabled: true
controllerName: "gateway.networking.k8s.io/nantian-gw"

Chart 会根据 controller name 推导默认 GatewayClass 名称,因此 gateway.networking.k8s.io/nantian-gw 会变成 nantian-gw

controlplane:
enabled: true
replicas: 2
image:
repository: "nantian-gw/nantian-controlplane"
tag: "sha-b3b9649"
pullPolicy: Always
config:
grpcAddr: ":18080"
adminAddr: ":18081"
metricsAddr: ":18082"
healthProbeAddr: ":18083"
features:
enableExperimentalGateway: false
enableAiGateway: false

控制面默认 tag 固定为经过验证的不可变 sha-b3b9649 构建。

控制面 Service 拆分如下:

Service端口
nantian-gw-controlplane-grpc18080
nantian-gw-controlplane-admin18081
nantian-gw-controlplane-metrics18082
dataplane:
enabled: true
replicas: 2
image:
repository: "nantian-gw/dataplane"
tag: ""
pullPolicy: Always
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "2000m"
memory: "1Gi"
config:
adminAddr: "0.0.0.0:19080"
runtime:
httpListenAddr: "0.0.0.0:10080"
accessLogVolume:
enabled: true
name: access-logs
mountPath: /var/log/nantian-gw
sizeLimit: 256Mi

数据面 Service 是 nantian-gw-dataplane-adminnantian-gw-dataplane-metrics,两者 Service port 都是 19080。运行时 HTTP 流量由配置中的监听地址 0.0.0.0:10080 处理。

dashboard:
enabled: true
replicas: 1
image:
repository: "nantian-gw/dashboard"
tag: ""
pullPolicy: Always

数据面和 dashboard 的 image tag 在 values.yaml 中为空;Helm 会把它们回退到 .Chart.AppVersion,当前为 0.1.0

不需要 Web UI 时可以关闭 dashboard:

Terminal window
helm upgrade --install nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw \
--create-namespace \
--set dashboard.enabled=false
hpa:
enabled: false
serviceMonitor:
enabled: false
networkPolicies:
enabled: true

只有在集群已安装 Prometheus Operator CRD 时,才开启 serviceMonitor.enabled。HPA 默认关闭;启用前请确认集群有 metrics-server,并且已经验证过数据面的资源 requests。

需要保留的修改请写入 values 文件:

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

私有镜像仓库和副本数覆盖示例:

global:
imageRegistry: "registry.example.com"
imagePullSecrets:
- name: registry-credentials
dataplane:
replicas: 4

实验性 Gateway runtime 行为由 featureMode 控制。AI Gateway 仍是显式的控制面功能,并且需要 experimental 模式:

featureMode: experimental
gatewayAPI:
installCRDs: true
channel: experimental
controlplane:
config:
features:
enableAiGateway: true

gatewayAPI.installCRDsgatewayAPI.channel 只控制 CRD 渲染。当需要由 Chart 渲染官方 experimental Gateway API CRD bundle 时,使用 gatewayAPI.channel: experimental

完整的启动、CRD 和验证流程见实验功能

Terminal window
kubectl get pods -n nantian-gw
kubectl get gatewayclass nantian-gw
kubectl get svc -n nantian-gw
helm status nantian-gw -n nantian-gw

如果数据面没有就绪,请检查它是否能连接 nantian-gw-controlplane-grpc:18080,并查看控制面和数据面日志。

升级已有 release:

Terminal window
helm upgrade nantian-gw nantian-gw/nantian-gw \
--namespace nantian-gw \
-f my-values.yaml

删除 release:

Terminal window
helm uninstall nantian-gw -n nantian-gw
kubectl delete namespace nantian-gw

Helm uninstall 会删除 chart 管理的资源。Gateway API CRD 和你在 chart 外创建的应用资源不会被 chart uninstall 删除。