Helm 安装
Helm 是 Nantian Gateway 推荐的安装方式。Chart 把控制面、数据面和管理界面打包进一次发布,默认值覆盖了大多数场景,需要覆盖的值也都能在 values.yaml 里找到。
Chart 托管在 Cloudflare Pages,要求 Helm 3.x。
安装前请确保集群已安装 Gateway API CRD:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.1/standard-install.yaml验证 CRD 已就绪:
kubectl get crd gateways.gateway.networking.k8s.io首先添加 Helm 仓库:
helm repo add nantian-gw https://chart.nantian.devhelm repo update最简单的安装方式就是跑一行命令。它会自动创建 nantian-gw 命名空间,给每个组件部署两个副本,然后注册 GatewayClass:
helm install nantian-gw nantian-gw/nantian-gw --namespace nantian-gw --create-namespace安装完成之后,你会拿到一套完整的运行环境:控制面两个副本(有主备选举)、数据面两个副本(都接流量)、管理界面一个副本。控制面和数据面之间通过 gRPC 双向流通信,默认用的是 18080 端口。
values.yaml 参数速查
Section titled “values.yaml 参数速查”Chart 的 values.yaml 注释写得很详细,下面是最常用的几个段。完整的默认值运行 helm show values 就能看到。
全局配置:
global: imageRegistry: "" # 所有镜像的前缀,适合离线/私有仓库场景 imagePullSecrets: [] # 私有仓库的拉取凭据 commonLabels: {} # 打在全部资源上的标签命名空间:
namespace: create: true # 让 Helm 帮你建命名空间 name: "nantian-gw" # 命名空间名字控制面:
controlplane: enabled: true replicas: 2 image: repository: "nantian-controlplane" tag: "latest" # 不填就用 Chart.appVersion pullPolicy: Always resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "500m" memory: "512Mi" config: grpcAddr: ":18080" adminAddr: ":18081" metricsAddr: ":18082" healthProbeAddr: ":18083" syncPeriod: "30s" leaderElection: enabled: true id: "nantian-controlplane-leader" leaseDuration: "15s" renewDeadline: "10s" retryPeriod: "2s" grpcTLS: enabled: false existingSecret: "" requireClientCert: false数据面:
dataplane: enabled: true replicas: 2 image: repository: "nantian-dataplane" tag: "latest" pullPolicy: Always resources: requests: cpu: "1" memory: "256Mi" limits: memory: "1Gi"常用覆盖场景
Section titled “常用覆盖场景”如果你用私有镜像仓库,或者需要指定版本号:
helm install nantian-gw nantian-gw/nantian-gw \ --set global.imageRegistry=ghcr.io/nantian-gw \ --set controlplane.image.tag=v0.2.0 \ --set dataplane.image.tag=v0.2.0关闭不需要的组件
Section titled “关闭不需要的组件”在只需要控制面和数据面的场景下,可以关掉管理界面:
helm install nantian-gw nantian-gw/nantian-gw \ --set dashboard.enabled=false自定义命名空间
Section titled “自定义命名空间”把网关装到一个已存在的命名空间里:
helm install nantian-gw nantian-gw/nantian-gw \ --set namespace.create=false \ --set namespace.name=my-gateway-ns \ -n my-gateway-ns开启 gRPC TLS
Section titled “开启 gRPC TLS”生产环境必须把控制面和数据面之间的 gRPC 通信加密起来。提前把证书存成 Secret,再引用:
helm install nantian-gw nantian-gw/nantian-gw \ --set controlplane.grpcTLS.enabled=true \ --set controlplane.grpcTLS.existingSecret=nantian-grpc-tls \ --set controlplane.grpcTLS.requireClientCert=trueTLS 相关的完整配置参考 TLS / mTLS 一节。
安装后的验证
Section titled “安装后的验证”Helm 跑完之后,确认所有组件都起起来了:
# 看 Pod 状态kubectl get pods -n nantian-gw
# 看 GatewayClass 有没有被领走kubectl get gatewayclass nantian-gw
# 看所有创建出来的资源kubectl get all -n nantian-gw正常情况下你会看到五个 Pod:两个控制面、两个数据面、一个管理界面,全部 Running,READY 列显示 1/1。GatewayClass 的 ACCEPTED 列应该显示 True,说明控制面已经认领了这个类。
不用了就清干净:
helm uninstall nantian-gw -n nantian-gwHelm 卸载不会自动删命名空间。如果需要彻底清掉:
kubectl delete namespace nantian-gw