BlogNGINX

Ingress NGINX Retirement: What to Do If You Are Still Running It

Scott Sternloff

By Scott Sternloff, Senior Enterprise Architect

LinkedIn · Updated · 4 min read

Ingress NGINX Retirement: What to Do If You Are Still Running It
On this page

The Kubernetes project retired Ingress NGINX in March 2026 and archived the kubernetes/ingress-nginx repository, read-only, on 24 March 2026. Clusters that still run it keep working, but there are no more releases, bug fixes or security updates. The job is to find every instance, list what your Ingress resources use, pick a destination and move hostnames one at a time beside the old controller.

This is about the community controller, not NGINX itself. NGINX open source, NGINX Plus and F5's NGINX Ingress Controller are separate products and are not part of the retirement. A reverse proxy on a virtual machine needs none of this. AceMQ's NGINX services page covers both the web tier and this migration, and managed Kubernetes covers running the clusters.

The announcement is months old, so the realistic reader found out late. The Kubernetes Steering and Security Response Committees warned in January 2026 that you may not know you are affected unless you check, and that no alternative is a direct drop-in replacement. They also cited Datadog research that about half of cloud native environments relied on the controller.

Step 1: Find every instance

Run the check the Kubernetes project publishes (it works in most cases), with cluster administrator permissions, in every cluster you own:

kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx

The retirement post notes the controller shipped as part of many hosted Kubernetes platforms, so check clusters you did not install it in, and clusters nobody owns any more. Helm charts and container images remain available, but the repository README tells anyone not already using it not to deploy it.

Step 2: List what your Ingress resources use

Effort is set by annotations, not by the number of Ingress objects. For each one, record the annotations (rewrites, authentication, rate limits, canary rules, CORS, backend protocol), any snippet annotations, the global ConfigMap settings, the TLS secrets and the team that owns the hostname. The retirement post names snippet annotations, which allow arbitrary NGINX directives, as flexibility that became technical debt and a security risk, so they get their own list.

Where common Ingress-NGINX behavior goes
Ingress-NGINX behaviorWhere it goes
TLS redirects, header changes, traffic splitting, matching on header, query or methodStandard fields in HTTPRoute
Authentication, connection timeouts, health checksImplementation-specific extensions or policies, per the Gateway API guide
Snippets and custom directivesNot part of Gateway API, whose extension points are extensionRef, implementation-specific types and policies, not annotations. F5's controller maps them to snippet annotations, and four Ingress-NGINX annotations (limit-connections, limit-rate, limit-rate-after, limit-whitelist) still need snippets there
Default backendNo direct equivalent. You define a catch-all rule
Canary by header, cookie and weightIngress-NGINX evaluates them in that order, and F5's guide says migrated manifests must keep the same order

Gateway API is a different model, not a renamed Ingress. Listeners and TLS belong to a Gateway owned by the cluster operator, routes belong to application teams, and annotations are not an extension point.

Step 3: Choose a destination

  • A Gateway API implementation. This is the Kubernetes project's recommendation. The Gateway API site lists conformant implementations including NGINX Gateway Fabric, Envoy Gateway, Istio, Cilium and Traefik. Its migration guide suggests weighing conformance reports, the proxy underneath and what your cloud or CNI already offers. If you run a mesh already, see Istio support and upgrades.
  • F5's NGINX Ingress Controller. It keeps the Ingress API. Annotations change prefix from nginx.ingress.kubernetes.io to nginx.org on the Ingress path, and many ConfigMap keys are renamed. F5 publishes a guide for replacing an Ingress-NGINX cluster with it.
  • Another Ingress controller from the list of Ingress controllers in the Kubernetes documentation, if it already serves part of your estate. Ask who maintains it, since a thin maintainer base is what ended this one.

Step 4: Run beside it, then move hostnames

Install the replacement next to Ingress NGINX with its own external address, so you can test without touching production. Convert resources with ingress2gateway as a starting point: version 1.0 reads ingress-nginx resources and emits standard Gateway API resources. It reports what it could not translate, it is not intended to copy annotations, and its README warns that widely used annotations may still be unsupported. The Gateway API guide says to test and verify every conversion.

Then move hostnames one at a time through DNS or the upstream load balancer, watching error rates and latency at each step. Keep Ingress NGINX until its traffic is gone, and remove it afterwards.

Where AceMQ fits

AceMQ turns the four steps into an inventory, a written destination recommendation, a parallel run and a cutover, delivered with partner NGINX specialists, followed by 24/7 NGINX support if you want it. A typical engagement is described in Ingress NGINX to Gateway API migration assessment. AceMQ does not patch or backport the retired controller; while you migrate, the inventory shows which hostnames and annotations still depend on it.

Sources

Frequently Asked Questions

Is Ingress NGINX the same as NGINX?

No. Ingress NGINX is the community Kubernetes ingress controller in the kubernetes/ingress-nginx repository, which was retired and archived on 24 March 2026. NGINX open source, NGINX Plus and F5's NGINX Ingress Controller are separate products and are not affected by that retirement.

Will my cluster stop working because of the retirement?

No. The Kubernetes project says existing deployments keep functioning and the Helm charts and images remain available. What stops is maintenance: no releases, no bug fixes and no security updates for newly found vulnerabilities.

Is there a tool that converts Ingress to Gateway API?

ingress2gateway, a Kubernetes SIG Network project, converts Ingress resources, including ingress-nginx ones, to Gateway API resources. It reports what it cannot translate and is meant as a starting point, so every converted route still needs testing.

Scott Sternloff

Author

Scott SternloffSenior Enterprise Architect

Senior Enterprise Architect at AceMQ. Writes the technical coverage here: RabbitMQ, Kafka and Redis architecture, clustering and migrations.

Talk to an engineer

Need a hand with NGINX?

Senior engineers who run it in production. Get a quote or a free consultation, no sales pitch.

Free Consultation

Get Expert Eyes on Your NGINX Environment

Whether you're troubleshooting a production incident, planning a migration, or want a second opinion on your architecture — our team is ready. No pitch, just answers.

Email Us