Ingress NGINX Is Retiring

In March 2026, Ingress NGINX — the most widely used Ingress implementation — reaches end of support. While the Ingress API itself remains, the retirement of its flagship implementation signals a shift to the Gateway API.

What makes Gateway API different from Ingress? The key difference is role separation. Infrastructure admins, cluster operators, and developers can configure their respective domains independently, offering greater expressiveness and extensibility.

This post extends the article published on yozm.wishket.com with detailed test data and a selection guide not covered in the original piece.

Which Implementations Were Tested?

ImplementationVersionKey Feature
NGINX Gateway Fabricv2.2.1Official Gateway API impl by F5 Networks
Envoy Gatewayv1.6.0CNCF graduated project, xDS protocol based
Istio Gatewayv1.28.0Service mesh integration, automated mTLS
Cilium Gatewayv1.18.4eBPF-based high-performance networking
Kong Gatewayv3.9 (KIC v3.5)Enterprise API gateway
Traefik Gatewayv3.6.2Cloud-native reverse proxy
kgateway (Solo.io)v2.1.1Excluded — no ARM64 support

What Was Tested?

17 test scenarios were executed over 100 rounds.

CategoryTest Items
Routing (3)Host-based, path-based, header-based routing
TLS/Security (3)TLS termination, HTTPS redirect, backend TLS/mTLS
Traffic Management (4)Canary deployment, rate limiting, timeout/retry, session affinity
Request/Response Modification (2)URL rewrite, header modification
Advanced Features (3)Cross-namespace, gRPC routing, health check
Performance/Stability (2)Load test (20 concurrent), failover recovery

100-Round Test Results

Overall Success Rates

ImplementationSuccess RatePASSFAILSKIPGrade
NGINX Gateway Fabric100%1502A
Envoy Gateway100%1502A
Istio Gateway100%1502A
Cilium Gateway100%1502A
Kong Gateway16.7%2105F
Traefik Gateway8.3%1115F
kgatewayN/A--17 SKIP-

Four implementations (NGINX, Envoy, Istio, Cilium) achieved zero failures across 100 rounds.

Why Did Kong Gateway Fail?

Error: "no Route matched with those values"

HTTPRoute resources failed to sync with Kong’s internal configuration. In “unmanaged gateway” mode, Gateway API compatibility issues caused basic routing to fail, triggering cascading failures across most tests.

Why Did Traefik Gateway Fail?

Error: "404 page not found" / "Gateway not ready"

Two root causes were identified:

  • EntryPoints port mismatch: Internal ports (8000/8443) vs external ports (80/443) mapping issue
  • BackendTLSPolicy CRD version mismatch: v1alpha3 vs v1

The Gateway never reached Ready state, making routing impossible.

Both Kong and Traefik are mature Ingress implementations, but their Gateway API support is still evolving.

How Is Rate Limiting Supported?

Rate limiting is not included in the Gateway API standard spec. However, all Tier 1 implementations support it through their own CRDs.

ImplementationSupportedCRD UsedCharacteristics
Envoy GatewayYesBackendTrafficPolicyGateway API style, most intuitive
NGINX Gateway FabricYesNginxProxyNGINX config based
Istio GatewayYesTelemetryIstio control plane integrated
Cilium GatewayYesCiliumClusterwideNetworkPolicyeBPF network policy integration

If API traffic control matters, Envoy Gateway’s BackendTrafficPolicy is the most Gateway API-friendly approach.

Which Implementation Should You Choose?

ScenarioRecommendedReason
Stability firstNGINX Gateway FabricProven ops experience, rich docs, large community
API rate limiting neededEnvoy GatewayGateway API style native rate limiting
Service mesh environmentIstio GatewayAutomated mTLS, Istio control plane integration
High performance / high trafficCilium GatewayeBPF kernel-level processing, network policy integration
Multi-cloud / hybridEnvoy GatewayFlexible xDS protocol-based configuration

Migration Recommendations

  1. Run Ingress and Gateway API in parallel with gradual transition
  2. Test thoroughly in a staging environment first
  3. Strengthen monitoring during the transition period
  4. Prepare a rollback plan to Ingress in case of issues

Note

This PoC was conducted on December 5, 2025. Results may differ as each implementation has been updated since then. We recommend re-validating with the latest versions before adoption.

References