Skip to content

Installation Overview

Nantian Gateway runs in Kubernetes as three workloads: a Go control plane, a Rust data plane, and an optional dashboard. Helm is the recommended install path for most users and operators. Kustomize overlays are available when you need patch-based manifests or GitOps workflows.

Not sure which method to use?

Need production features (rollback, hooks, values)?
└── YES → Use Helm
NO → Deploying from Git? Need overlay patches?
└── YES → Use Kustomize
NO → Use Helm (still the simplest option)
MethodBest forNotes
HelmMost installations, upgrades, and value overrides.Uses the chart repository at https://chart.nantian.dev.
KustomizeGitOps or repository-local manifest customization.Uses overlays from the component repositories.

Install Gateway API CRDs before installing the gateway. The quick start uses the Gateway API v1.5.1 standard CRD bundle.

A default Helm install uses the nantian-gw namespace and creates these main resources:

ResourceDefault nameDefault count or portPurpose
Namespacenantian-gw1Component namespace when namespace.create: true.
Control plane Deploymentnantian-gw-controlplane2 replicasWatches Kubernetes resources, translates them, updates status, and publishes snapshots.
Data plane Deploymentnantian-gw-dataplane2 replicasReceives snapshots and handles runtime traffic.
Dashboard Deploymentnantian-gw-dashboard2 replicasWeb UI for users and operators.
GatewayClassnantian-gw1Uses controller gateway.networking.k8s.io/nantian-gw.

The Helm chart creates the GatewayClass; it does not create your application Gateway or HTTPRoute. Create those resources in application namespaces after installation.

The current Helm templates create fixed ClusterIP services for control plane, data plane admin/metrics, and dashboard access:

ServicePortPurpose
nantian-gw-controlplane-grpc18080Data plane xDS/gRPC connection.
nantian-gw-controlplane-admin18081Control plane admin API.
nantian-gw-controlplane-metrics18082Control plane Prometheus metrics.
nantian-gw-dataplane-admin19080Data plane admin API.
nantian-gw-dataplane-metrics19080Data plane metrics scrape entry.
nantian-gw-dashboard3000Dashboard web UI.

The data plane runtime HTTP listener is configured as 0.0.0.0:80. Expose this listener according to your environment, for example with port-forwarding in local tests or a Kubernetes Service overlay for cluster ingress. Do not expose the control plane gRPC, admin, or metrics services outside the cluster.

The chart defaults are intentionally conservative:

  • Images use global.imageRegistry: "ghcr.io" with repositories nantian-gw/nantian-controlplane, nantian-gw/dataplane, and nantian-gw/dashboard.
  • Control plane, data plane, and dashboard each run two replicas by default.
  • The chart runs in featureMode: standard by default.
  • The chart does not render Gateway API CRDs by default: gatewayAPI.installCRDs: false and gatewayAPI.channel: standard.
  • The chart pins the v2026.06.0 release tag (with pullPolicy: IfNotPresent) for control plane, data plane, and dashboard by default; production environments should still pin a specific release tag or digest explicitly in their values files.
  • HPA is disabled by default with hpa.enabled: false.
  • Prometheus Operator ServiceMonitor resources are disabled by default with serviceMonitor.enabled: false.
  • NetworkPolicies are enabled by default with networkPolicies.enabled: true.
  • The data plane has accessLogVolume.enabled: true, mounted at /var/log/nantian-gw with sizeLimit: 256Mi.
  • Experimental Gateway and AI features are disabled by default in both planes.

Use this reading order when you plan to run Nantian Gateway with Helm in a real cluster:

  1. Start with Helm Installation for repository setup, render/install commands, release verification, and helm test.
  2. Use Helm Values Guide to organize environment-specific values files and choose the right value groups.
  3. Apply the hardening checklist in Production Deployment before exposing production traffic.
  4. Follow Upgrade Guide when chart versions, values schemas, or CRD expectations change.

After installation, verify the workloads and GatewayClass:

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

If a pod is not ready, inspect recent logs:

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

Then create a demo Gateway and HTTPRoute as shown in the Quick Start.

  • Use Helm Installation for repository setup, default values, render/install commands, helm test, and uninstall commands.
  • Use Helm Values Guide for layered values files, major chart value groups, and production guardrails.
  • Use Experimental Features before creating AIService, TokenPolicy, WasmPlugin, or experimental BackendLBPolicy resources.
  • Use Operations for first checks after install, service names, logs, metrics, and admin access.

For clusters without internet access, pre-pull and re-tag images:

Terminal window
# On a machine with internet access
docker pull ghcr.io/nantian-gw/nantian-controlplane:v2026.07.0
docker pull ghcr.io/nantian-gw/dataplane:v2026.07.0
docker pull ghcr.io/nantian-gw/dashboard:v2026.07.0
# Tag for your private registry
docker tag ghcr.io/nantian-gw/nantian-controlplane:v2026.07.0 \
registry.internal.example.com/nantian-gw/nantian-controlplane:v2026.07.0
docker tag ghcr.io/nantian-gw/dataplane:v2026.07.0 \
registry.internal.example.com/nantian-gw/dataplane:v2026.07.0
docker tag ghcr.io/nantian-gw/dashboard:v2026.07.0 \
registry.internal.example.com/nantian-gw/dashboard:v2026.07.0
# Push to private registry
docker push registry.internal.example.com/nantian-gw/nantian-controlplane:v2026.07.0
docker push registry.internal.example.com/nantian-gw/dataplane:v2026.07.0
docker push registry.internal.example.com/nantian-gw/dashboard:v2026.07.0

Then override the image registry in your Helm values:

global:
imageRegistry: registry.internal.example.com
controlplane:
image:
tag: v2026.07.0
dataplane:
image:
tag: v2026.07.0
dashboard:
image:
tag: v2026.07.0

For Helm charts in air-gapped environments, download the chart tarball:

Terminal window
helm pull nantian/nantian-gw --version 2026.07.0
# Transfer nantian-gw-2026.07.0.tgz to the air-gapped machine
helm install nantian-gw ./nantian-gw-2026.07.0.tgz -f values.yaml

Gateway API CRDs must also be available offline. Download the manifest and transfer it:

Terminal window
curl -LO https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.1/standard-install.yaml
kubectl apply -f standard-install.yaml