DEV Community

Cover image for Stop the Panic: NGINX is NOT Dead: Understanding the ingress-nginx Controller Retirement
Anderson Leite
Anderson Leite

Posted on

Stop the Panic: NGINX is NOT Dead: Understanding the ingress-nginx Controller Retirement

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:

  1. NGINX - The open-source web server/reverse proxy/load balancer maintained by F5
  2. NGINX Plus - The commercial version with additional features
  3. OpenResty - NGINX with Lua scripting capabilities
  4. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Popular β‰  Sustainable: Despite widespread use, ingress-nginx struggled with maintainership
  2. Evolution is Natural: What worked in 2016 may not meet 2025's requirements
  3. 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:

  1. Gateway API: A more powerful, flexible replacement exists
  2. Healthy Competition: Multiple mature alternatives available
  3. No Breaking Changes: Existing deployments continue to work
  4. 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:

  1. Check if you're using ingress-nginx controller
  2. Evaluate alternatives (Gateway API recommended)
  3. Plan migration before March 2026
  4. 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


Have you started planning your migration from ingress-nginx? What alternative are you considering? Share your thoughts in the comments!

Top comments (0)