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