-
Notifications
You must be signed in to change notification settings - Fork 368
Open
Labels
Description
Description
Currently when an ApisixRoute is not accepted, ** all ** ApisixRoutes are shown as not accepted, and it is not easy to determine which ApisixRoute is at fault. The index of the problem route is indicated, but not the name & namespace.
It would be beneficial to only reject the invalid routes, allowing those that are valid to continue to update the config.
If that is not possible, it would make troubleshooting easier if the message included the namespace & name of the problem route.
Steps to reproduce:
Install apisix
helm install apisix \
--namespace ingress-apisix \
--create-namespace \
--set apisix.deployment.role=traditional \
--set apisix.deployment.role_traditional.config_provider=yaml \
--set etcd.enabled=false \
--set ingress-controller.enabled=true \
--set ingress-controller.config.provider.type=apisix-standalone \
--set ingress-controller.apisix.adminService.namespace=ingress-apisix \
--set ingress-controller.gatewayProxy.createDefault=true \
apisix/apisixInstall a hello-world service
helm install hello-world \
--namespace hello-world \
--create-namespace \
--version 21.0.8 \
--set image.repository=bitnamilegacy/nginx \
--set global.security.allowInsecureImages=true \
--set-literal serverBlock='server {listen 0.0.0.0:8080;location /hello-world {default_type text/plain;return 200 "Hello, World!";}}' \
oci://registry-1.docker.io/bitnamicharts/nginxAdd a valid route
kubectl apply -f - << __EOF__
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: hello-world-1
namespace: hello-world
spec:
ingressClassName: apisix
http:
- name: hello-world-1
match:
paths:
- /hello-world-1
backends:
- serviceName: hello-world-nginx
servicePort: 80
__EOF__Check the route's status
kubectl get apisixroute -n hello-world hello-world-1 -o yaml | yq .statusconditions:
- lastTransitionTime: "2026-02-03T18:33:40Z"
message: ""
observedGeneration: 2
reason: Accepted
status: "True"
type: AcceptedAdd an invalid route (reference a plugin that does not exist)
kubectl apply -f - << __EOF__
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: hello-world-2
namespace: hello-world
spec:
ingressClassName: apisix
http:
- name: hello-world-2
match:
paths:
- /hello-world-2
backends:
- serviceName: hello-world-nginx
servicePort: 80
plugins:
- name: non-existent-plugin
enable: true
__EOF__Verify the new plugin
kubectl get apisixroute -n hello-world hello-world-2 -o yaml | yq .statusconditions:
- lastTransitionTime: "2026-02-03T18:36:37Z"
message: 'ServerAddr: http://10.244.0.6:9180, Err: invalid routes at index 1, err: unknown plugin [non-existent-plugin]'
observedGeneration: 1
reason: SyncFailed
status: "False"
type: AcceptedObserve that the original apisixroute is also no longer accepted
kubectl get apisixroute -n hello-world hello-world-1 -o yaml | yq .statusconditions:
- lastTransitionTime: "2026-02-03T18:36:37Z"
message: 'ServerAddr: http://10.244.0.6:9180, Err: invalid routes at index 1, err: unknown plugin [non-existent-plugin]'
observedGeneration: 2
reason: SyncFailed
status: "False"
type: AcceptedReactions are currently unavailable