NGINX Ingress Annotations to Gateway API Migration
This page provides a practical migration guide for NGINX Ingress annotations when moving to Gateway API in Cilium environments.
This guide focuses on common annotation patterns and their closest Gateway API equivalents or alternatives.
Migration Triage Model
Use this order when migrating annotations:
Direct mapping: replace the annotation with native Gateway API fields and filters.
Extension-dependent: migrate only if your environment supports the required experimental or implementation-specific extension.
No equivalent / not planned: redesign behavior (policy, app, or platform setting) instead of searching for a 1:1 translation.
Note
When a mapping references a GEP or experimental API, verify feature support in both your installed Gateway API version and Cilium release. Entries marked Not yet supported have no Cilium implementation today and may be added in future releases.
Inventory Existing NGINX Annotations
Extract currently used annotations before conversion:
kubectl get ingress -A -o json \
| jq -r '.items[]
| [.metadata.namespace, .metadata.name,
((.metadata.annotations // {}) | to_entries[]
| select(.key | startswith("nginx.ingress.kubernetes.io/"))
| "\(.key)=\(.value)")] | @tsv'
Prioritize by frequency and production criticality (auth, redirect, timeout, TLS, and source restriction annotations first).
Common Direct Mappings
NGINX annotation |
Gateway API equivalent |
External reference |
Cilium support |
Notes |
|---|---|---|---|---|
|
|
Yes |
Weighted traffic splitting. |
|
|
|
Yes |
Combine with weighted |
|
|
|
Yes |
Supported in Cilium, but regex matching remains implementation-specific in Gateway API. |
|
|
|
Yes |
Use per-rule rewrite filters. |
|
|
|
Yes |
Redirect HTTP to HTTPS at route level. |
|
|
|
Yes |
Set permanent redirect behavior. |
|
|
|
Yes |
Closest match for upstream response timing; compare carefully with end-to-end |
|
|
|
Yes |
Experimental in Gateway API (GEP-1731). Maps retry count only, not the full |
|
|
|
Yes |
Replace controller selection model. Note: uses the |
|
|
|
Yes |
Migrate alternate hostnames explicitly. |
|
|
|
Yes (enable |
For backend protocol hints. |
|
|
|
Not yet supported |
Experimental in Gateway API (GEP-1767). |
|
|
|
Yes |
Backend TLS trust material. |
|
|
|
Yes |
CA and validation behavior. |
|
|
|
Yes |
Use policy attachment for backend TLS. |
Complex Mappings and Extension-Dependent Cases
The following annotations do not have a direct Gateway API equivalent today. Migration depends on implementation-specific extensions or the graduation of upstream GEPs into the Gateway API standard. Unless noted otherwise, Cilium does not yet support these mappings.
NGINX annotation |
Suggested approach |
External reference |
Cilium support |
Complexity |
|---|---|---|---|---|
|
Implementation-specific traffic policy extension |
Not yet supported |
High |
|
|
Implementation-specific data-plane tuning policy |
Not yet supported |
High |
|
|
|
Not yet supported |
High |
|
|
Frontend/client certificate validation extension |
Not yet supported |
High |
|
other |
Retry and timeout fields (partly experimental) |
Not yet supported |
High |
|
|
|
Not yet supported |
High |
|
|
Implementation-specific client traffic policy |
Not yet supported |
High |
|
|
Cilium network policy and/or implementation-specific route security filters |
Not yet supported |
High |
No Equivalent or Not Planned
These are common examples that do not have a 1:1 Gateway API migration target:
configuration-snippet,server-snippet,server-snippets(won't add)sendfile(won't add)proxy-store(no direct equivalent)proxy-bufferingand related proxy buffer tuning annotationsworker-processes(N/A)
For these cases, prefer one of:
Move behavior to application/runtime configuration.
Move behavior to dedicated platform policy objects (if available).
Drop legacy tuning that is no longer relevant with Gateway API + Envoy.
Validation
For every migrated annotation, validate:
Route/Gateway condition status (Accepted, Programmed, ResolvedRefs).
End-to-end behavior parity (redirects, headers, auth, retries, TLS).
SLO impact during rollout (error rate, latency, retry amplification).