
Ingress NGINX has been one of the most widely used ingress controllers in Kubernetes. For many teams, it became the default solution for exposing applications securely. However, the Kubernetes community has officially announced that Ingress NGINX is being retired.
Because of this change, teams must start planning their migration now. Otherwise, continuing to use an unsupported ingress controller will increase security, maintenance, and compliance risks over time.
In this guide, you’ll learn what the Ingress NGINX retirement means, when support officially ends, and—most importantly—how to migrate step by step to a supported alternative before the final deadline.
What Is Ingress NGINX?
Ingress NGINX is a Kubernetes ingress controller built on top of NGINX. It allows you to route external traffic to services inside a cluster. In addition, it supports TLS termination, load balancing, path-based routing, and authentication features.
For years, it was recommended in Kubernetes documentation and widely adopted across production environments. As a result, many clusters today still rely on it heavily.
You can learn more about its original purpose in the official repository:
👉 https://github.com/kubernetes/ingress-nginx
What Does “Ingress NGINX Retirement” Mean?
Ingress NGINX being retired does not mean it will stop working immediately. Instead, retirement means the project has reached end-of-life (EOL).
More specifically:
- No new features will be added
- No long-term bug fixes will be released
- Security patches will eventually stop
- The repository will become read-only
Because of this, running Ingress NGINX after retirement becomes increasingly risky, especially in production environments.
When Is the Last Date to Migrate?
The Kubernetes community has announced March 2026 as the final retirement date.
Key Timeline
- Now – March 2026: Best-effort maintenance only
- March 2026: Official end of support
- After March 2026: No fixes, no security updates, no guarantees
This timeline is aligned with guidance from Kubernetes SIG Network and maintainers.
👉 Official Kubernetes networking updates:
https://kubernetes.io/docs/concepts/services-networking/
Therefore, all production workloads should be migrated before March 2026.
Why Is Ingress NGINX Being Retired?
Several important reasons led to this decision.
First, Kubernetes Networking Has Evolved
The original Ingress API was limited. Over time, Kubernetes introduced the Gateway API, which provides a more flexible and structured approach to traffic management.
👉 Gateway API documentation:
https://gateway-api.sigs.k8s.io/
Second, Maintenance Became Difficult
Ingress NGINX relies heavily on annotations and custom configuration. As Kubernetes evolved, maintaining compatibility and addressing security issues became more complex and time-consuming.
As a result, long-term sustainability became a challenge.
Finally, the Community Is Moving Forward
The Kubernetes ecosystem is shifting toward actively maintained ingress and gateway solutions. Because of this, Ingress NGINX no longer aligns with the long-term roadmap.
What Happens If You Do Nothing?
In the short term, your applications will continue to run. However, the risks grow over time.
If you delay migration:
- Security vulnerabilities may remain unpatched
- New Kubernetes versions may break compatibility
- Compliance audits may fail
- Operational support becomes harder
Because of these risks, migration should be planned—not postponed.
Recommended Migration Options
Before starting, you must choose where to migrate.
Option 1: Gateway API (Recommended)
The Gateway API is the modern replacement for the Ingress API. It provides:
- Clear separation of responsibilities
- Better support for multi-team environments
- A future-proof networking model
Popular Gateway API implementations include:
- Envoy Gateway – https://gateway.envoyproxy.io/
- Istio Gateway – https://istio.io/
- Traefik – https://doc.traefik.io/traefik/
- Kong Gateway – https://konghq.com/
Option 2: Another Ingress Controller
If you prefer to stay with the Ingress API, choose an actively maintained controller such as:
- Traefik Ingress – https://traefik.io/
- Contour (Envoy-based) – https://projectcontour.io/
- HAProxy Ingress – https://www.haproxy.com/documentation/kubernetes-ingress/
- F5 NGINX Ingress Controller – https://www.nginx.com/products/nginx-ingress-controller/
This approach may reduce migration effort but offers fewer long-term benefits than Gateway API.
Step-by-Step Migration Guide
Phase 1: Audit Your Current Setup
First, identify where Ingress NGINX is running:
kubectl get pods --all-namespaces | grep ingress-nginx
Next, export all ingress resources:
kubectl get ingress --all-namespaces -o yaml > all-ingresses.yaml
At this stage, document:
- Annotations (
nginx.ingress.kubernetes.io/*) - TLS configuration
- Rewrite rules
- Authentication settings
This step is critical because annotations often do not translate directly.
Phase 2: Choose and Install the New Controller
After auditing, install your chosen solution in a development or staging environment.
For example, when using Gateway API:
- Install Gateway API CRDs
- Deploy a Gateway controller
- Create a test Gateway
👉 Gateway API installation guide:
https://gateway-api.sigs.k8s.io/guides/
Avoid making production changes at this stage.
Phase 3: Convert Existing Ingress Rules
Now, begin converting ingress rules.
Example: Gateway API HTTPRoute
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: app-route
spec:
parentRefs:
- name: app-gateway
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app-service
port: 80
At this point, validate routing, TLS termination, and hostname behavior carefully.
Phase 4: Test in Parallel
Before switching traffic:
- Run the new controller alongside Ingress NGINX
- Test application flows
- Verify performance and latency
- Confirm logging and monitoring
Meanwhile, fix any gaps caused by annotation differences.
Phase 5: Production Cutover
Once testing is complete:
- Update DNS or load balancer settings
- Shift traffic gradually
- Monitor error rates and response times
Tools like blue/green deployments or canary releases are highly recommended.
Phase 6: Decommission Ingress NGINX
Finally:
- Remove Ingress NGINX Helm releases or manifests
- Delete unused ingress resources
- Clean up annotations
- Update internal documentation
This step ensures no hidden dependencies remain.
Best Practices for a Smooth Migration
- Start early to avoid deadline pressure
- Test changes incrementally
- Avoid big-bang migrations
- Document every decision
- Train teams on the new networking model
Most importantly, treat this as a platform upgrade, not just a YAML change.
Final Thoughts
The retirement of Ingress NGINX marks a major shift in Kubernetes networking. Although it served the community well for many years, the ecosystem has clearly moved forward.
By migrating before March 2026, you reduce risk, improve security, and prepare your platform for the future. Therefore, now is the right time to plan, test, and execute your migration with confidence.