Nginx Ingress Controller

November 9, 2021

What is it?

First, let’s recall what Ingress is. Ingress is an API object that manages external access to the services in a cluster by exposing HTTP and HTTPS routes from the outside to the services that run inside a cluster.
An Ingress Controller is responsible for fulfilling the Ingress with a load balancer and optionally other frontends to help you manage the traffic.

Types of Ingress Controllers

In this article we are going to talk about two versions of Ingress Controllers – Community and Nginx. But what is the difference? Why more than one version?

Nginx Ingress Controller is an Ingress Controller for Kubernetes Ingress using NGINX as reverse proxy and load balancer. The definition is simple yet there may be some confusion when talking about Nginx and Ingress Controller since the name „Nginx” usually appears in discussion about both Community Ingress Controller and Nginx Ingress Controller. That leads us to answering the aforementioned question: what is the difference between the two?

The difference

To answer this question, let’s look at distinctive definitions of both Ingress Controllers:

  • Community Ingress Controller: found in the kubernetes/ingress-nginx repo on GitHub, the community Ingress controller is based on NGINX Open Source with docs on Kubernetes.io. It is maintained by the Kubernetes community with a commitment from F5 NGINX to help manage the project,
  • Nginx Ingress Controller: Found in the nginxinc/kubernetes-ingress repo on GitHub, NGINX Ingress Controller is developed and maintained by F5 NGINX with docs on docs.nginx.com. It is available in two editions:
    • NGINX Open Source‑based (free and open source option),
    • NGINX Plus-based (commercial option).

Apart from different editions and licensing, the main difference is in the development and deployment model.
These differences are manifested in the following advantages of Nginx Ingress Controller:

  • no dependency on 3rd party modules or Lua code effectively leading to nginx being the only source of truth for all components of the Ingress Controller,
  • native, type‑safe, and indented configuration style that makes implementations easier,
  • with enterprise license, professional support is available.

Advantages mentioned above are of „high-level” type. However, in practice, Nginx Ingress Controller delivers other important capabilities that are lacking in the Community version of Ingress Controller e.g. annotations to extend functionality (persistence, load balancing algorithms) or built-in http load balancing.
So, how can you get Nginx Ingress Controller?
Installation of Nginx Ingress Controller involves using a couple of manifests in a correct order. Full installation documentation can be found here: Installation with Manifests | NGINX Ingress Controller
Since the process requires only to copy already crafted commands, we will skip installation details in this article.

Summary

After following the aforementioned instructions the last thing to do is to check whether the process finished successfully. In order to do that, you can check whether accessing the newly created service’s IP address yields a 404 response. Such response means that the installation was done correctly.

From now on you know what are the differences between two popular versions of Ingress Controller. Hopefully it helps you when choosing the correct one for your deployment!