@@ -32,6 +32,7 @@ import (
3232
3333 "github.com/apache/apisix-ingress-controller/api/v1alpha1"
3434 apiv2 "github.com/apache/apisix-ingress-controller/api/v2"
35+ "github.com/apache/apisix-ingress-controller/pkg/utils"
3536)
3637
3738const (
@@ -52,20 +53,43 @@ const (
5253)
5354
5455func SetupIndexer (mgr ctrl.Manager ) error {
56+ setupLog := ctrl .LoggerFrom (context .Background ()).WithName ("indexer-setup" )
57+
58+ // Gateway API indexers - conditional setup based on API availability
59+ for resource , setup := range map [client.Object ]func (ctrl.Manager ) error {
60+ & gatewayv1.Gateway {}: setupGatewayIndexer ,
61+ & gatewayv1.HTTPRoute {}: setupHTTPRouteIndexer ,
62+ & gatewayv1.GatewayClass {}: setupGatewayClassIndexer ,
63+ & v1alpha1.Consumer {}: setupConsumerIndexer ,
64+ } {
65+ if utils .HasAPIResource (mgr , resource ) {
66+ if err := setup (mgr ); err != nil {
67+ return err
68+ }
69+ } else {
70+ setupLog .Info ("Skipping indexer setup, API not found in cluster" , "api" , utils .FormatGVK (resource ))
71+ }
72+ }
73+
74+ // Gateway secret index needs conditional setup since it uses Gateway API
75+ if utils .HasAPIResource (mgr , & gatewayv1.Gateway {}) {
76+ if err := setupGatewaySecretIndex (mgr ); err != nil {
77+ return err
78+ }
79+ } else {
80+ setupLog .Info ("Skipping indexer setup, API not found in cluster" , "api" , utils .FormatGVK (& gatewayv1.Gateway {}))
81+ }
82+
83+ // Core Kubernetes and APISIX indexers - always setup these
5584 for _ , setup := range []func (ctrl.Manager ) error {
56- setupGatewayIndexer ,
57- setupHTTPRouteIndexer ,
5885 setupIngressIndexer ,
59- setupConsumerIndexer ,
6086 setupBackendTrafficPolicyIndexer ,
6187 setupIngressClassIndexer ,
6288 setupGatewayProxyIndexer ,
63- setupGatewaySecretIndex ,
6489 setupApisixRouteIndexer ,
6590 setupApisixPluginConfigIndexer ,
6691 setupApisixTlsIndexer ,
6792 setupApisixConsumerIndexer ,
68- setupGatewayClassIndexer ,
6993 } {
7094 if err := setup (mgr ); err != nil {
7195 return err
0 commit comments