Skip to main content
This lesson explains how GatewayClass registers a Gateway API controller and how to pick the right provider for your cluster networking needs. The Gateway API is an evolution of the Ingress API. It separates control plane and data plane responsibilities, improves portability across controllers, and provides clearer integration points for both edge and internal traffic. The diagram below gives a concise comparison of the trade-offs between the legacy Ingress approach and the Gateway API design.
A GatewayAPI slide showing a side-by-side comparison with a red "No" column listing drawbacks (e.g., vendor-locked config, proprietary CRDs) and a green "Yes" column listing benefits (e.g., Standard Kubernetes API, portable across controllers). The graphic includes the GatewayAPI logo and copyright.
Why consider Gateway API?
  • Clear separation of responsibilities (control plane vs data plane).
  • Portable resource definitions across different controller implementations.
  • Richer routing and TLS features (e.g., header rewrites, request mirroring, gRPC routes).
  • Better support for both edge (ingress) and service-to-service (east-west) traffic patterns.
Like Ingress, multiple vendors and open-source projects implement Gateway API controllers. The API definitions are standardized; what varies is how each controller implements features, enforces policies, and integrates with cloud or on-prem infrastructure. The image below lists several popular Gateway API controllers.
A 3x2 grid of cloud-native / DevOps logos on a white background, including Traefik’s mascot at top left and the green NGINX hexagon in the bottom center. The other icons are colorful hexagonal and geometric service symbols.
Popular Gateway API controllers (examples) To start using a Gateway API implementation, you must register the controller with a cluster-scoped GatewayClass. The GatewayClass acts as the registration entry for a controller and declares which implementation handles Gateways that reference it. GatewayClass manifest example (commonly created by a Helm chart):
Key points about the manifest:
  • spec.controllerName is the critical identifier: it tells Kubernetes which controller will manage Gateways that reference this GatewayClass.
  • Helm charts for controllers often provision this GatewayClass automatically and add helpful annotations and labels for management and lifecycle.
GatewayClass is cluster-scoped and acts as a registration entry for a controller. Gateways reference a GatewayClass to declare which controller will manage them.
Inspecting what a GatewayClass supports
  • After installing a controller (or its Helm chart), inspect the GatewayClass to confirm supported features and validate whether the controller meets your requirements.
  • Use kubectl describe to view supportedFeatures and other controller-provided details.
Example command:
Example excerpt showing supported features:
Why check supportedFeatures?
  • Confirms support for specific route types (HTTPRoute, GRPCRoute, etc.).
  • Verifies advanced capabilities like TLS policies, WebSocket support, header manipulation, and mirroring.
  • Helps you design Gateway and Route resources that the controller actually supports, reducing troubleshooting time.
Quick troubleshooting tips
  • Ensure Gateway resources reference the correct GatewayClass name.
  • If a feature is missing, check the controller documentation or its Helm chart values — some features may be opt-in or require extra configuration.
  • Use controller logs and events (kubectl get events) to surface conflicts or rejected resources.
Links and references That concludes this lesson on GatewayClass and provider selection. I hope you found it helpful.

Watch Video