FAQ
This document provides answers to frequently asked questions (FAQ) when using APISIX Ingress Controller.
How does Ingress Controller handle route priority across multiple resources?#
In APISIX, a higher value indicates a higher route priority.
- Ingress: Does not support explicit route priority. Routes created using Ingress are assigned a default priority of 0, typically the lowest.
- HTTPRoute: Has a 38-bit priority. The priority calculation is dynamic and may change, making exact values difficult to predict.
- APISIXRoute: Can be assigned an explicit priority. To have a higher priority than an HTTPRoute, the value must exceed 549,755,813,887 (2^39 − 1).
How do HTTPRoute filters interact with PluginConfig CRDs?#
APISIX maps built-in Gateway API HTTPRoute filters to specific plugins:
RequestHeaderModifier→proxy-rewriteRequestRedirect→redirectRequestMirror→proxy-mirrorURLRewrite→proxy-rewriteResponseHeaderModifier→response-rewriteCORS→corsExtensionRef→ user-defined plugin reference
When both filters and a PluginConfig CRD are applied:
- If filters are applied first, PluginConfig overrides any overlapping plugin settings.
- If PluginConfig is applied first, filters merge with PluginConfig settings, and overlapping fields from filters take precedence.
Can Admin API resources coexist with controller-managed resources?#
With provider.type: apisix, synchronization selects resources labeled
manager-by: apisix-ingress-controller. Resources created outside the controller
without this label are excluded from deletion, including when a Gateway or
IngressClass is deleted. Do not reuse controller-generated resource IDs for
externally managed resources: a matching ID can still be overwritten.
ADC filters top-level resources. Routes nested under a selected Service are
included with that Service, so externally managed routes should not share a
controller-managed Service. Global rules and plugin metadata do not support this
label-based isolation and remain subject to full reconciliation. The label also
does not distinguish separate controller installations sharing one APISIX instance,
or separate GatewayProxy resources that point to the same Admin API endpoint: each
GatewayProxy is synchronized on its own and can delete resources the other one created.
Give each GatewayProxy its own APISIX instance.
This behavior does not apply to apisix-standalone, which manages a complete
configuration.
When upgrading, unlabeled historical resources with IDs still present in the controller's desired configuration are updated and labeled during synchronization. Unlabeled orphaned resources are preserved. Review their ownership before deleting them or adding the controller label; adding the label allows the next synchronization to delete resources absent from the controller's desired configuration.