@@ -170,9 +170,14 @@ func (r *HTTPRouteReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
170170 }
171171 }
172172
173+ var httpRouteErr error
173174 if err := r .processHTTPRoute (tctx , hr ); err != nil {
174- acceptStatus .status = false
175- acceptStatus .msg = err .Error ()
175+ httpRouteErr = err
176+ // When encountering a backend reference error, it should not affect the acceptance status
177+ if ! strings .Contains (err .Error (), string (gatewayv1 .RouteReasonInvalidKind )) {
178+ acceptStatus .status = false
179+ acceptStatus .msg = err .Error ()
180+ }
176181 }
177182
178183 if err := r .processHTTPRoutePolicies (tctx , hr ); err != nil {
@@ -187,6 +192,13 @@ func (r *HTTPRouteReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
187192 }
188193 }
189194
195+ // If the backend reference error is because of an invalid kind, use this error first
196+ if httpRouteErr != nil && strings .Contains (httpRouteErr .Error (), string (gatewayv1 .RouteReasonInvalidKind )) {
197+ resolveRefStatus = status {
198+ status : false ,
199+ msg : httpRouteErr .Error (),
200+ }
201+ }
190202 ProcessBackendTrafficPolicy (r .Client , r .Log , tctx )
191203
192204 if err := r .Provider .Update (ctx , tctx , hr ); err != nil {
@@ -492,7 +504,7 @@ func (r *HTTPRouteReconciler) processHTTPRoute(tctx *provider.TranslateContext,
492504 kind = strings .ToLower (string (* backend .Kind ))
493505 }
494506 if kind != "service" {
495- terror = fmt .Errorf ("kind %s is not supported" , kind )
507+ terror = fmt .Errorf ("%s %s" , string ( gatewayv1 . RouteReasonInvalidKind ) , kind )
496508 continue
497509 }
498510
0 commit comments