TopGit
GitHub Repo Review

NGINX Ingress Controller: Kubernetes Traffic Routing

nginx/kubernetes-ingress
NTopGit review image for nginx/kubernetes-ingress
Review by Topgit.dev for nginx/kubernetes-ingress, with GitHub repository stats and README context.
Quick verdict

NGINX Ingress Controller is F5's own Kubernetes Ingress implementation, running on open-source NGINX or paid NGINX Plus. Standard Ingress covers host/path routing and TLS termination; VirtualServer and TransportServer custom resources add traffic splitting and TCP/UDP/TLS-passthrough routing plain Ingress can't do. Reach for it for first-party NGINX support with a Plus path; skip it to avoid a second CRD set alongside stock Ingress.

Stars
โ˜… 5.1k
Forks
โ‘‚ 2.1k
Contributors
๐Ÿ‘ฅ 190
Language
Go
License
Apache-2.0
Topic
Developer Tools
Updated
Aug 2026

Understanding the NGINX Ingress Controller

NGINX Ingress Controller is the official Ingress Controller for Kubernetes, built and maintained by the NGINX team at F5. It runs as a pod in your cluster, watching Ingress and its own VirtualServer/VirtualServerRoute resources to reconfigure the NGINX load balancer โ€” handling host/path routing, TLS termination, and load balancing for Websocket, gRPC, TCP, and UDP. It's a different codebase from kubernetes/ingress-nginx.

Key Features for Kubernetes Traffic

  • โœ“Content-based routing via standard Ingress: host-based routing (e.g., foo.example.com vs bar.example.com) and path-based routing (e.g., /serviceA vs /serviceB).
  • โœ“TLS/SSL termination configured per hostname.
  • โœ“VirtualServer and VirtualServerRoute custom resources for traffic splitting and advanced content-based routing beyond what the Ingress spec supports.
  • โœ“The TransportServer resource covers TCP, UDP, and TLS Passthrough traffic.
  • โœ“Load balancing for Websocket and gRPC applications in addition to HTTP.
  • โœ“Extra NGINX/NGINX Plus behavior exposed through annotations and the ConfigMap resource, without needing a custom resource for every tweak.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history โ†—

Installing the Ingress Controller

The README doesn't paste install commands directly โ€” it points to a Helm chart or a set of Kubernetes manifests, both linked from the docs, so treat those pages as the source of truth for exact steps. What is confirmed: the current stable release is 5.5.4, and its images are published to DockerHub, the GitHub Container registry, the Amazon ECR Public Gallery, and Quay.io (NGINX Plus images come from F5's own container registry, or you build your own from source). The README stresses that the image, the manifests/Helm chart, and the docs you follow all need to match versions โ€” pairing an edge image with the 5.5.4 manifests, for example, isn't supported. After installing, the README's own next step is configuring a simple app either through the plain Ingress resource (its Cafe example) or the VirtualServer resource (its basic-configuration example).

Configuring Ingress and Advanced Routing

Two configuration paths exist side by side. The plain Ingress resource handles host- and path-based routing plus per-hostname TLS termination โ€” the same shape as any Kubernetes Ingress, extended with annotations and a ConfigMap resource when you need to reach past the Ingress spec's own fields. VirtualServer and VirtualServerRoute are the second path, purpose-built for traffic splitting and content-based routing the plain Ingress object can't express, and the README ships a basic-configuration example for that route. For traffic that isn't HTTP at all, the TransportServer resource handles TCP, UDP, and TLS Passthrough. Beyond routing shape, the controller load-balances Websocket and gRPC traffic the same way it does HTTP. Every example referenced lives in the repo's examples/ directory, alongside the fuller configuration-examples docs.

Why Choose NGINX for Kubernetes Ingress?

  • โœ“Built and maintained by the NGINX team at F5 itself, not a third-party reimplementation โ€” you're running the same engine's own controller.
  • โœ“VirtualServer/VirtualServerRoute and TransportServer resources cover traffic splitting, TCP/UDP, and TLS Passthrough that plain Kubernetes Ingress has no spec for.
  • โœ“One controller handles HTTP, Websocket, gRPC, TCP, and UDP, so there's no separate L4 load balancer to run alongside Ingress for non-HTTP traffic.
  • โœ“SBOMs ship for both binaries and Docker images (SPDX format via syft), so you can run a supply-chain scan like grype against the exact image you deploy.
  • โœ“Apache-2.0 licensed, so the open-source NGINX edition has no restrictions on production use even without a Plus contract.
  • โœ“A recurring public community call every other Monday covers PRs, issues, and feature requests in the open, per the README.

Considerations and Potential Limitations

  • โ–ณTwo parallel configuration models to learn โ€” plain Ingress with annotations/ConfigMap, and the VirtualServer/VirtualServerRoute CRDs โ€” instead of one.
  • โ–ณThe commercial support contract is only for NGINX Plus customers; the README doesn't mention an equivalent for the free NGINX edition.
  • โ–ณThe README insists documentation only be used against the exact stable release you're running (currently 5.5.4) โ€” mismatch the image, manifests, and docs versions and you're on your own.
  • โ–ณInstall steps aren't spelled out in the README itself โ€” you're sent to separate Helm chart or manifest docs, so there's no copy-pasteable quick start in the facts here.
  • โ–ณEasy to confuse with kubernetes/ingress-nginx โ€” same 'NGINX Ingress Controller' idea, different codebase, and the README has to call that out explicitly.
View on GitHub โ†—Homepage โ†—

Distinguishing from Other NGINX Ingress Options

kubernetes/ingress-nginx โ€” the community-maintained, NGINX-based Ingress controller that this project's own README explicitly calls out as a different codebase despite the similar name.Traefik โ€” another Ingress/reverse-proxy controller for Kubernetes with its own CRDs for advanced routing, similar in spirit to VirtualServer. โ†—Kong Ingress Controller โ€” an API-gateway-flavored Ingress controller, worth it if you want plugin and auth tooling built in beyond plain routing.Istio Ingress Gateway โ€” service-mesh-based ingress, a fit if you're already running Istio and want the mesh's own gateway handling ingress instead of a standalone controller.HAProxy Ingress โ€” an HAProxy-based option for teams standardized on HAProxy rather than NGINX.

Frequently Asked Questions

Does NGINX Ingress Controller support both NGINX and NGINX Plus?

NGINX Ingress Controller runs on either open-source NGINX or NGINX Plus, per its README, with NGINX Plus adding a commercial support contract on top of the same controller.

What is the difference between this NGINX Ingress Controller and kubernetes/ingress-nginx?

NGINX Ingress Controller (this repo, nginx/kubernetes-ingress) and kubernetes/ingress-nginx are explicitly different projects, per this README's own note โ€” separate codebases, not two names for the same controller.

What standard Ingress features does it support?

NGINX Ingress Controller supports the standard Kubernetes Ingress feature set: host-based and path-based content routing, plus TLS/SSL termination for each hostname.

Can NGINX Ingress Controller handle Websocket, gRPC, TCP, and UDP traffic?

NGINX Ingress Controller load-balances Websocket, gRPC, TCP, and UDP applications in addition to HTTP, per its README, with TCP/UDP and TLS Passthrough specifically handled through the TransportServer resource.

What are VirtualServer and VirtualServerRoute resources?

VirtualServer and VirtualServerRoute are NGINX Ingress Controller's own custom resources, offered as an alternative to plain Ingress for cases like traffic splitting and advanced content-based routing that the standard Ingress object doesn't support.

Is commercial support available for NGINX Ingress Controller?

NGINX Ingress Controller has commercial support when paired with NGINX Plus โ€” the README states that pairing is covered by a support contract for NGINX Plus customers, with no mention of an equivalent paid tier for the free NGINX edition.

The problem it solves

Kubernetes' built-in Ingress resource only standardizes the basics โ€” host/path routing and per-hostname TLS โ€” and leaves protocols like gRPC, raw TCP/UDP, and traffic-splitting patterns like canary releases outside its spec entirely. NGINX Ingress Controller exists to close that gap for people already running NGINX: it implements the standard Ingress object, then layers its own VirtualServer/VirtualServerRoute and TransportServer custom resources on top so those un-standardized cases don't require bolting on a second, unrelated load balancer.

Best use cases

  • โ€ขRunning production HTTP(S) ingress for services on Kubernetes where the team already standardizes on NGINX and wants vendor support behind it.
  • โ€ขSplitting traffic โ€” canary or blue-green style routing โ€” via VirtualServer/VirtualServerRoute when plain Ingress's simple path/host matching isn't enough.
  • โ€ขLoad balancing non-HTTP protocols โ€” Websocket, gRPC, raw TCP/UDP โ€” through one controller instead of bolting on a separate L4 load balancer.
  • โ€ขTLS Passthrough for workloads that need to terminate TLS themselves rather than at the ingress, handled through the TransportServer resource.
  • โ€ขTeams on NGINX Plus who want a commercial support contract tied directly to their ingress layer.

Who should try it โ€” and who should skip

Reach for NGINX Ingress Controller if your team already standardizes on NGINX, needs routing beyond what plain HTTP Ingress can express โ€” traffic splitting, gRPC, raw TCP/UDP โ€” or wants a straight line to NGINX Plus's commercial support. Skip it if you just need basic HTTP routing with no existing NGINX preference, since you'd be learning the VirtualServer/VirtualServerRoute CRDs on top of standard Ingress for capabilities you may not need, or if you're already deep in kubernetes/ingress-nginx and don't want a second, differently-configured controller running alongside it.

Related repositories

Source & attribution

Facts and quotes sourced from the nginx/kubernetes-ingress GitHub repository and its README.

GitHub data ยท last synced Aug 12, 2026Reviewed by Henry
โ† Back to TopGit

Curious whether kubernetes-ingress is right for you?

Let ChatGPT, Claude, or Perplexity look into it โ€” click below and see what AI actually says about kubernetes-ingress.

GitHub