HAProxy Enterprise Kubernetes Ingress Controller Documentation 1.9

HAProxy Kubernetes Ingress Controller

The HAProxy Kubernetes Ingress controller implements the rules defined in the Kubernetes Ingress object. It provides routing specifications to satisfy Ingress object requests.

What is Kubernetes Ingress?

Kubernetes Ingress is an API object governing the traffic between services within the Kubernetes cluster and users outside the cluster. HTTP routing rules defined on the Ingress resource provide not only externally reachable URLs but may also be configured to provide extra functionality such as rate limiting, custom HTTP headers, path rewriting, CORS, and SSL.

What are the benefits of an ingress controller?

A Kubernetes ingress controller simplifies the configuration required to make cluster services accessible to clients. Although an ingress controller is not absolutely necessary to configure such access, it offers a more feature-rich and flexible paradigm than the traditional NodePort and LoadBalancer service types.

Rather than exposing each of your services directly to the outside world via NodePort or LoadBalancer service types, the ingress controller acts as a single, unified gateway for all of your services, which reduces the number of TCP ports or DNS domain names you need. This has cost savings benefits when operating in the cloud because you don’t need to allocate a cloud load balancer for every service. A single ingress controller can serve as the gateway to many applications running in your cluster.

Teams within your organization can be responsible for configuring their own Ingress routing rules, while cluster administrators own the implementation of the ingress controller that interprets and applies those rules within the Kubernetes network. You can also deploy multiple ingress controllers to watch for and handle Ingress rules from different departments and teams. For example, an ingress controller that watches for internal-facing services could watch for rules that apply to it, while a public internet facing ingress controller could watch for other rules. Both would run within the same Kubernetes cluster.

Using the Kubernetes ingress controller

The HAProxy Kubernetes Ingress Controller adds and removes routes in its underlying load balancer configuration when it detects that pods have been added or removed from the cluster. However, first you must tell it which groups of pods to monitor. To do that, you must define Ingress resources.

An Ingress resource defines which group of pods to monitor and how routing should be set up. Without at least one Ingress resource, the Kubernetes Ingress Controller has nothing to do. You can deploy an Ingress resource for each of your services.

Next up

Install the HAProxy Kubernetes Ingress Controller