To handle traffic in web applications, architects can use any networking software capable of understanding the L7 layer- for managing HTTP requests. The networking software can be a mix of the following things:
- [Application/network] load balancers
- API gateway
- Ingress controllers (for Kubernetes workloads only)
With the growing adoption of Kubernetes around 2020, DevOps and architects started using Ingress controllers to handle traffic into their container workloads. Some organizations may use a mix of application load balancers (ALB), API gateway, and Ingress controllers; or just ingress.
Please note: For ingress to work, one has to deploy an ingress controller in a cluster. Since Kubernetes as a project maintains AWS, GCE, and NGINX ingress controllers– these are also assumed as default Kubernetes ingress controllers. Throughout this blog, we will refer to NGINX ingress as the default Kubernetes ingress. Other players in the market that provide ingress controllers are HAProxy, Ambassador, Kong, Traefik, Istio, etc.
Istio service mesh has recently been widely accepted to abstract the communication among microservices and simplify and secure the communication. Out of many compelling capabilities, Istio also provides its ingress controller. This article will explain the difference between Istio ingress and Kubernetes ingress.
( In case you are interested, check API gateway vs Istio gateway)
Brief intro to Kubernetes NGINX Ingress
Kubernetes Ingress is an API object that manages external access to the services in a cluster, typically HTTP. Ingress may provide load balancing, SSL termination, and name-based virtual hosting.
Features of Kubernetes NGINX Ingress
Kubernetes NGINX Ingress supports Kubernetes workloads natively and can easily be set up for load-balancing capabilities.
- Integrated into Kubernetes; no other components are required
- Basic load balancing and routing capability are provided
- Easy to set up and utilize for simple use cases
- It can be supplemented with third-party plugins.
- Integrates with other Kubernetes resources like ConfigMaps and Secrets.