TL;DR - What's Actually Happening
π¨ What's retiring: The Kubernetes ingress-nginx controller project
β
What's NOT affected: NGINX web server, NGINX Plus, OpenResty, or any other NGINX-based products
π
Timeline: Best-effort maintenance until March 2026
π Action needed: If you use ingress-nginx controller, start planning migration to alternatives
Don't know what I'm talking about? Read the official announcement here and keep reading the article to understand what's going on and what alternatives you have.
Introduction: DΓ©jΓ Vu All Over Again
Remember the Great Docker Panic of 2020? (Don't know about it? You can read about it here, here and the original FAQ from 2020 here) When Kubernetes announced the deprecation of dockershim, the internet erupted with "Kubernetes is dropping Docker!" headlines, causing widespread confusion. The reality? Containers continued to run just fine with containerd, and Docker images worked exactly as before.
Well, here we go again.
On November 11, 2025, the Kubernetes SIG Network and Security Response Committee announced the retirement of the ingress-nginx project. And predictably, social media and forums are already ablaze with misconceptions about "NGINX dying" or "Kubernetes dropping NGINX support."
Let me be crystal clear: NGINX, the web server that powers a significant portion of the internet, is NOT going anywhere.
What ingress-nginx Actually Is (And Isn't)
The NGINX Ecosystem
First, let's understand the players:
- NGINX - The open-source web server/reverse proxy/load balancer maintained by F5
- NGINX Plus - The commercial version with additional features
- OpenResty - NGINX with Lua scripting capabilities
- ingress-nginx - A Kubernetes Ingress controller that happens to use NGINX
The ingress-nginx controller is just ONE implementation of a Kubernetes Ingress controller that uses NGINX under the hood. It's a Kubernetes community project, not the NGINX project itself.
What an Ingress Controller Does
# This is an Ingress resource - it needs a controller to work
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80
An Ingress controller watches for these Ingress resources and configures a load balancer (in this case, NGINX) to route traffic accordingly. Think of it as the bridge between Kubernetes' declarative configuration and the actual traffic routing.
Why ingress-nginx is Being Retired
The announcement outlines several key challenges:
1. Maintenance Burden
- Only 1-2 maintainers working in their spare time
- Complex codebase with years of accumulated features
- Security concerns with features like "snippets" annotations
2. Evolution of Standards
What was once considered a feature (like arbitrary configuration injection) is now seen as a security risk. The project accumulated technical debt that became increasingly difficult to manage.
3. Better Alternatives Now Exist
When ingress-nginx was created, it was one of the few options. Now we have:
- Gateway API (the modern replacement for Ingress)
- Multiple mature Ingress controllers from various vendors
- Cloud-provider specific solutions
What This Means for You
If You're Using ingress-nginx Controller
Check if you're affected:
kubectl get pods --all-namespaces \
--selector app.kubernetes.io/name=ingress-nginx
If this returns pods, you're using ingress-nginx and should plan migration.
If You're Using NGINX in Other Ways
Not affected:
- NGINX as a standalone web server
- NGINX in Docker containers (not as Ingress controller)
- NGINX Plus installations
- OpenResty deployments
- Other NGINX-based Ingress controllers (like NGINX Inc.'s official controller)
Migration Paths
Option 1: Gateway API (Recommended)
The Gateway API is the evolution of Ingress, offering:
- Better separation of concerns
- More expressive configuration
- Built-in support for advanced scenarios
# Modern Gateway API approach
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-app-route
spec:
parentRefs:
- name: my-gateway
hostnames:
- myapp.example.com
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: my-app-service
port: 80
Option 2: Alternative Ingress Controllers
Popular alternatives include:
- Traefik - Dynamic configuration, Let's Encrypt integration
- HAProxy Ingress - High-performance, enterprise features
- Contour - Envoy-based, modern architecture
- NGINX Ingress Controller (by NGINX Inc. via NGINX Plus) - Commercial support available
- Kong Ingress - API gateway features
- Ambassador - Developer-friendly, declarative configuration
Option 3: Cloud Provider Solutions
- AWS: Application Load Balancer (ALB) Ingress Controller
- Google Cloud: GKE Ingress
- Azure: Application Gateway Ingress Controller
Timeline and What Happens Next
Now - March 2026
- Best-effort maintenance continues
- Security fixes will still be provided
- You should start planning migration
After March 2026
- No new releases
- No bug fixes
- No security updates
- Important: Existing deployments continue to work
- Container images and Helm charts remain available
Lessons Learned: The Lifecycle of Kubernetes Projects
This situation highlights important aspects of open-source sustainability:
- Popular β Sustainable: Despite widespread use, ingress-nginx struggled with maintainership
- Evolution is Natural: What worked in 2016 may not meet 2025's requirements
- Community Projects Need Community Support: Using open source means considering how to give back
The Bright Side
Unlike the dockershim deprecation (which was purely removal), this situation actually represents progress:
- Gateway API: A more powerful, flexible replacement exists
- Healthy Competition: Multiple mature alternatives available
- No Breaking Changes: Existing deployments continue to work
- Adequate Timeline: Over 4 months notice for migration
Conclusion: Don't Panic, Do Plan
Just as Kubernetes didn't "kill Docker" when dockershim was removed, this retirement doesn't mean "NGINX is dead" or "Kubernetes is dropping NGINX." It means one specific Ingress controller implementation is being retired due to maintenance challenges.
Key Takeaways:
- β NGINX (the web server) is alive and well
- β You have multiple excellent alternatives
- β Existing deployments won't break
- β You have time to plan migration
- β This is not an emergency
- β NGINX is not being removed from Kubernetes
Action Items:
- Check if you're using ingress-nginx controller
- Evaluate alternatives (Gateway API recommended)
- Plan migration before March 2026
- Consider contributing to the open-source projects you depend on
Remember: In the cloud native world, change is constant, but it's rarely catastrophic. This is evolution, not extinction.
Resources
- Official Retirement Announcement
- Gateway API Documentation
- List of Ingress Controllers
- Migrating from Ingress to Gateway API
Have you started planning your migration from ingress-nginx? What alternative are you considering? Share your thoughts in the comments!
Top comments (0)