Migrate from NGINX Ingress to Envoy Gateway
Available as of MKE 3.9.0 Mirantis Kubernetes Engine (MKE) includes the Envoy Gateway controller, which implements the Kubernetes Gateway API. Gateway API is the successor to the Ingress API, which is the path that Mirantis recommends for new and migrated ingress traffic.
Attention
The NGINX Ingress Controller provided by MKE reached End of Life (EOL) status on 2026-APR-01. It is highly recommended that you migrate from NGINX Ingress Controller to Envoy Gateway controller before Mirantis support for the NGINX Ingress Controller ends on 2026-DEC-31. Plan your migration before support ends.
You can run NGINX Ingress and Envoy Gateway in the same cluster at the same time. Each controller exposes traffic through its own load balancer service, so they typically receive different external addresses. This allows you to:
Translate and test Gateway API resources without having to change production Ingress.
Compare behavior on an application-by-application basis.
Roll back quickly, by keeping DNS or the load balancer pointed at NGINX.
Only once you have validated Envoy Gateway for an application should you remove its Ingress resources. Disable the NGINX Ingress Controller only once there is nothing that relies on it.
Ingress controller high-level mapping
The following table maps common NGINX Ingress Conroller concepts to their Envoy Gateway equivalents.
NGINX Ingress |
Envoy Gateway |
|---|---|
Ingress rules (host/path) |
HTTPRoute |
|
Gateway listener |
|
|
NGINX annotations |
HTTPRoute filters, Gateway API fields, or Envoy Gateway policies / extensions |
Single Ingress resource |
Gateway plus one or more |
Migration approach
For migrating to Envoy Gateway from NGINX Ingress, Mirantis recommends the following approach:
Step |
Direction |
Detail |
|---|---|---|
1 |
Inventory ingress per application. |
For each application or team, list the ingress resources, hostnames, TLS secrets, and NGINX-specific annotations. Note which behaviors are required in production. |
2 |
You can enable the Envoy Gateway Controller through the MKE configuration file or through the MKE web UI. |
|
3 |
Plan per application. |
For each application:
|
4 |
Create Gateway API resources. |
Draft Gateway and HTTPRoute manifests for each application from your inventory and plan. Unsupported snippets and many NGINX annotations require manual follow-up. |
5 |
Adjust for MKE. |
Set |
6 |
Deploy and verify in isolation. |
Apply Gateway/HTTPRoute resources for one application. Reach the new entry point – separate hostname, DNS weighting, or test LB – and verify routing, redirects, path behavior, TLS, timeouts, body size, WebSockets/long-lived connections if applicable, and observability. |
7 |
Shift traffic gradually. |
Move production traffic per application; DNS, external LB, or traffic split. Keep NGINX Ingress in place until the application is stable on Gateway API. |
8 |
Decommission Ingress for each affected application. |
Delete the Ingress resources. Once none of your workloads are using
NGINX Ingress, disable |