Skip to content

Quick Start

This guide walks through installing Nantian Gateway on a local Kind cluster. After completing the steps below, the control plane, data plane, and dashboard will be operational.

Expected time to complete: approximately five minutes.

Complete the prerequisites before proceeding:

  • A running Kubernetes cluster (Kind recommended for local development)
  • kubectl and helm installed and available in PATH
  • Gateway API CRDs installed on the cluster

Nantian Gateway is distributed as a Helm chart. The chart is available via the Helm repository as nantian-gw/nantian-gw.

For local development, install directly from the chart directory:

Terminal window
helm install nantian-gw nantian-gw/nantian-gw

To review the default configuration before installing:

Terminal window
helm show values nantian-gw/nantian-gw

After Helm completes, verify that all pods are running:

Terminal window
kubectl get pods -n nantian-gw

Expected output:

NAME READY STATUS RESTARTS AGE
nantian-gw-controlplane-xxxxxxxxx-xxxxx 1/1 Running 0 30s
nantian-gw-controlplane-xxxxxxxxx-xxxxx 1/1 Running 0 20s
nantian-gw-dataplane-xxxxxxxxx-xxxxx 1/1 Running 0 25s
nantian-gw-dataplane-xxxxxxxxx-xxxxx 1/1 Running 0 15s
nantian-gw-dashboard-xxxxxxxxx-xxxxx 1/1 Running 0 10s

The deployment should show two control plane replicas, two data plane replicas, and one dashboard pod. Each pod should display 1/1 in the READY column and Running in the STATUS column.

Verify that the GatewayClass resource was created:

Terminal window
kubectl get gatewayclass

Expected output:

NAME CONTROLLER ACCEPTED AGE
nantian-gateway gateway.nantian.io/gateway-controller True 1m

The chart includes a sample application that demonstrates the Gateway API routing model. Deploy it to verify end-to-end connectivity:

Terminal window
kubectl apply -f gateway/examples/httpbin.yaml

This manifest creates a deployment, service, and HTTPRoute for the httpbin testing application.

Verify the route was created:

Terminal window
kubectl get httproute

Expected output:

NAME HOSTNAMES AGE
httpbin-route 1m

Send a request through the gateway to the sample application:

Terminal window
curl -s http://localhost:18080/get

Expected response:

{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.example.com",
"User-Agent": "curl/8.0.0"
},
"origin": "127.0.0.1",
"url": "http://httpbin.example.com/get"
}

The response confirms that the request passed through the data plane and reached the backend service. The Host header was set by the gateway, and the origin reflects the data plane’s IP address.

The Helm installation created the following components:

  • Control plane (2 replicas) — watches Kubernetes resources, translates configuration, and pushes it to data plane instances via gRPC xDS
  • Data plane (2 replicas) — handles client traffic, terminates TLS, performs routing, and forwards requests to backend services
  • Dashboard (1 replica) — serves the web-based admin interface for monitoring and configuration
  • GatewayClass — defines the gateway controller implementation
  • Gateway — configures listeners for HTTP and HTTPS traffic