Skip to main content
Welcome to this hands‑on demo. In this lesson you’ll install the Kubernetes Gateway API CRDs, deploy the NGINX Gateway Fabric control plane, and verify the installed resources so you can begin creating Gateways and Routes. This walkthrough follows the NGINX Gateway Fabric public documentation. If you need deeper configuration examples, consult the official docs linked at the end. Overview
  • Install the Kubernetes Gateway API CRDs required by Gateway API types.
  • Install the NGINX Gateway Fabric control plane with Helm.
  • Verify namespace, pods, services, and the available GatewayClass.
Prerequisites
  • A Kubernetes cluster (local clusters like kind or Docker Desktop are fine).
  • kubectl configured to talk to your cluster.
  • Helm 3.x installed.
Tip: For a local test environment use a kind cluster. In cloud environments you typically expose the control plane using a LoadBalancer service type instead of NodePort.

Install the Gateway API CRDs

NGINX Gateway Fabric relies on Gateway API types (GatewayClass, Gateway, HTTPRoute, GRPCRoute, etc.). Install the Gateway API custom resource definitions (CRDs) provided by the NGINX repo:
Expected (trimmed) confirmation output:
These CRDs make the Gateway API resource types available in your cluster.

Install the NGINX Gateway Fabric Helm chart

Install the NGINX Gateway Fabric control plane into a dedicated namespace (nginx-gateway). For local clusters without a cloud load balancer we’ll expose the NGINX service as NodePort. In production or cloud environments prefer LoadBalancer. Command:
What these flags do:
Warning: Using NodePort binds ports on cluster nodes. For production or cloud deployments use LoadBalancer or an Ingress controller integrated with your cloud provider.
Example trimmed Helm output:
Note: the Warning: unrecognized format "int32"/"int64" messages are informational OpenAPI warnings and can usually be ignored.

Verify the installation

  1. Confirm the namespace exists:
Example output:
  1. Inspect resources in the nginx-gateway namespace:
Example output:
Conceptual notes: control plane vs data plane
  • The pods you see in the nginx-gateway namespace are the control plane components. The control plane stores configuration and watches Gateway API resources.
  • When you create a Gateway and attach Routes, the control plane configures the corresponding data plane (NGINX instances or sidecars) that actually process the application traffic.
  • The control plane manages lifecycle, configuration distribution, and reconciliation for data plane instances.

Check available GatewayClass resources

GatewayClass objects advertise which controller/author manages Gateways of that class. After installation you should see a GatewayClass for NGINX. List GatewayClass objects cluster-wide:
Example output:
When you create a Gateway, select the GatewayClass you want the controller to manage. If you install other implementations (HAProxy, Envoy, Istio, etc.) you’ll see additional GatewayClass entries. Quick reference — common next steps
  • Create a Gateway resource that references the nginx GatewayClass.
  • Create HTTPRoute or GRPCRoute resources to attach services to Gateway listeners.
  • Inspect control plane logs and data plane resources to see configuration propagation.

Closing

You now have the Gateway API CRDs installed and the NGINX Gateway Fabric control plane running in your cluster. From here you can create Gateways and Routes and watch how the control plane configures data plane instances to handle traffic. Links and references If you try this at home and run into issues, leave a comment and we’ll help troubleshoot.

Watch Video