Containers & Orchestration

What is Ingress Controller?

Definition

An Ingress Controller is a Kubernetes component that watches Ingress resources and configures a reverse proxy to route external HTTP and HTTPS traffic to services inside the cluster.

An Ingress Controller is a specialized pod or set of pods within a Kubernetes cluster that implements the Ingress API resource. It acts as a reverse proxy and load balancer, handling external HTTP and HTTPS requests and forwarding them to the appropriate internal services based on rules defined in Ingress resources.

The controller continuously watches the Kubernetes API server for Ingress objects. When a new Ingress rule is created or updated, the controller automatically reconfigures the underlying proxy server (e.g., NGINX, HAProxy, Traefik, Envoy) to apply routing rules, TLS termination, and virtual hosting. This allows multiple services to be exposed through a single external IP address or hostname, reducing the need for separate load balancers per service.

Ingress Controllers are typically deployed as a Deployment or DaemonSet and exposed externally via a Service of type LoadBalancer or NodePort. They integrate with cloud-provider load balancers to receive traffic from the internet. The Ingress resource itself is a cluster-scoped API object that defines routing, SSL certificates, and path-based or host-based rules. Without an Ingress Controller, Ingress resources have no effect; the controller is the actual implementation that makes the abstraction work.

Key facts

  • An Ingress Controller is required to make Kubernetes Ingress resources functional.
  • Popular implementations include NGINX Ingress Controller, HAProxy Ingress, Traefik, and Envoy-based Contour.
  • The controller dynamically updates its reverse proxy configuration as Ingress rules are added, modified, or removed.
  • Ingress Controllers often terminate TLS/SSL and support load balancing across multiple backend pods.
  • They are typically deployed as a DaemonSet or Deployment with a Service of type LoadBalancer for external access.

How it works in practice

A team deploys the NGINX Ingress Controller in their Kubernetes cluster using a Helm chart. They create an Ingress resource that maps 'api.example.com' to a service named 'api-service' on port 8080, and 'app.example.com' to 'app-service' on port 80. The controller automatically configures NGINX to route requests from the external load balancer IP to the correct services. TLS certificates are attached to the Ingress for HTTPS, and the controller handles certificate termination.

Related terms

Ingress Kubernetes Service Load Balancer Reverse Proxy NodePort ClusterIP Service Mesh

References

More in Containers & Orchestration

ConfigMap

A ConfigMap is a Kubernetes API object used to store non-confidential configuration data in key-value pairs, which pods can consume as environment variables, command-line arguments, or configuration files.

Container

A container is a lightweight, isolated runtime that packages an application with its dependencies using OS-level virtualization, enabling consistent execution across environments.

Container Image

A container image is a lightweight, standalone, executable package that includes everything needed to run a piece of software: code, runtime, system tools, libraries, and settings. It is the unit of distribution in container ecosystems like Docker and Kubernetes.

Container Registry

A container registry is a service that stores and distributes container images, enabling developers to push, pull, and version images across environments.

Container Runtime

A container runtime is the low-level software that creates, starts, and stops containers according to the OCI runtime specification, enabling process isolation and resource management.

Docker

Docker is a platform and toolchain for packaging, distributing, and running applications inside lightweight, portable containers, popularising the technology from 2013 onward.

Helm

Helm is a package manager for Kubernetes that uses charts to define, install, and upgrade complex applications as a single, versioned unit.

Init Container

An init container is a specialized container in a Kubernetes pod that runs to completion before any regular containers start, performing initialization or setup tasks.

Kubernetes

Kubernetes is an open source platform for automating the deployment, scaling, and management of containerized applications across clusters of hosts.

Operator

A Kubernetes Operator is a custom controller that extends the Kubernetes API to automate the management of a specific application, encoding human operational knowledge as code.

Who Is Online

In total there are 60 users online: 0 registered, 53 guests and 7 bots.

Most users ever online was 5,555 on 17 Jul 2026, 3:23 am.

Bots: AhrefsBot Applebot Baiduspider Other Bot Other Crawler PetalBot SemrushBot

Users active in the past 15 minutes. Total registered members: 369