@@ -35,6 +35,7 @@ import (
3535 "github.com/apache/apisix-ingress-controller/api/v1alpha1"
3636 apiv2 "github.com/apache/apisix-ingress-controller/api/v2"
3737 "github.com/apache/apisix-ingress-controller/internal/controller"
38+ "github.com/apache/apisix-ingress-controller/internal/controller/config"
3839 "github.com/apache/apisix-ingress-controller/internal/controller/indexer"
3940 "github.com/apache/apisix-ingress-controller/internal/controller/status"
4041 "github.com/apache/apisix-ingress-controller/internal/manager/readiness"
@@ -125,60 +126,73 @@ func setupControllers(ctx context.Context, mgr manager.Manager, pro provider.Pro
125126 }
126127
127128 // Gateway API Controllers - conditional registration based on API availability
129+ if ! config .ControllerConfig .DisableGatewayAPI {
130+ for resource , controller := range map [client.Object ]Controller {
131+ & gatewayv1.GatewayClass {}: & controller.GatewayClassReconciler {
132+ Client : mgr .GetClient (),
133+ Scheme : mgr .GetScheme (),
134+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGatewayClass ),
135+ Updater : updater ,
136+ },
137+ & gatewayv1.Gateway {}: & controller.GatewayReconciler {
138+ Client : mgr .GetClient (),
139+ Scheme : mgr .GetScheme (),
140+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGateway ),
141+ Provider : pro ,
142+ Updater : updater ,
143+ },
144+ & gatewayv1.HTTPRoute {}: & controller.HTTPRouteReconciler {
145+ Client : mgr .GetClient (),
146+ Scheme : mgr .GetScheme (),
147+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindHTTPRoute ),
148+ Provider : pro ,
149+ Updater : updater ,
150+ Readier : readier ,
151+ },
152+ & gatewayv1alpha2.TCPRoute {}: & controller.TCPRouteReconciler {
153+ Client : mgr .GetClient (),
154+ Scheme : mgr .GetScheme (),
155+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindTCPRoute ),
156+ Provider : pro ,
157+ Updater : updater ,
158+ Readier : readier ,
159+ },
160+ & gatewayv1alpha2.UDPRoute {}: & controller.UDPRouteReconciler {
161+ Client : mgr .GetClient (),
162+ Scheme : mgr .GetScheme (),
163+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindUDPRoute ),
164+ Provider : pro ,
165+ Updater : updater ,
166+ Readier : readier ,
167+ },
168+ & gatewayv1.GRPCRoute {}: & controller.GRPCRouteReconciler {
169+ Client : mgr .GetClient (),
170+ Scheme : mgr .GetScheme (),
171+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGRPCRoute ),
172+ Provider : pro ,
173+ Updater : updater ,
174+ Readier : readier ,
175+ },
176+ & v1alpha1.Consumer {}: & controller.ConsumerReconciler {
177+ Client : mgr .GetClient (),
178+ Scheme : mgr .GetScheme (),
179+ Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindConsumer ),
180+ Provider : pro ,
181+ Updater : updater ,
182+ Readier : readier ,
183+ },
184+ } {
185+ if utils .HasAPIResource (mgr , resource ) {
186+ controllers = append (controllers , controller )
187+ } else {
188+ setupLog .Info ("Skipping controller setup, API not found in cluster" , "api" , utils .FormatGVK (resource ))
189+ }
190+ }
191+ } else {
192+ setupLog .Info ("Skipping Gateway API controllers setup as Gateway API is disabled" )
193+ }
194+
128195 for resource , controller := range map [client.Object ]Controller {
129- & gatewayv1.GatewayClass {}: & controller.GatewayClassReconciler {
130- Client : mgr .GetClient (),
131- Scheme : mgr .GetScheme (),
132- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGatewayClass ),
133- Updater : updater ,
134- },
135- & gatewayv1.Gateway {}: & controller.GatewayReconciler {
136- Client : mgr .GetClient (),
137- Scheme : mgr .GetScheme (),
138- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGateway ),
139- Provider : pro ,
140- Updater : updater ,
141- },
142- & gatewayv1.HTTPRoute {}: & controller.HTTPRouteReconciler {
143- Client : mgr .GetClient (),
144- Scheme : mgr .GetScheme (),
145- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindHTTPRoute ),
146- Provider : pro ,
147- Updater : updater ,
148- Readier : readier ,
149- },
150- & gatewayv1alpha2.TCPRoute {}: & controller.TCPRouteReconciler {
151- Client : mgr .GetClient (),
152- Scheme : mgr .GetScheme (),
153- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindTCPRoute ),
154- Provider : pro ,
155- Updater : updater ,
156- Readier : readier ,
157- },
158- & gatewayv1alpha2.UDPRoute {}: & controller.UDPRouteReconciler {
159- Client : mgr .GetClient (),
160- Scheme : mgr .GetScheme (),
161- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindUDPRoute ),
162- Provider : pro ,
163- Updater : updater ,
164- Readier : readier ,
165- },
166- & gatewayv1.GRPCRoute {}: & controller.GRPCRouteReconciler {
167- Client : mgr .GetClient (),
168- Scheme : mgr .GetScheme (),
169- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindGRPCRoute ),
170- Provider : pro ,
171- Updater : updater ,
172- Readier : readier ,
173- },
174- & v1alpha1.Consumer {}: & controller.ConsumerReconciler {
175- Client : mgr .GetClient (),
176- Scheme : mgr .GetScheme (),
177- Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName (types .KindConsumer ),
178- Provider : pro ,
179- Updater : updater ,
180- Readier : readier ,
181- },
182196 & netv1.Ingress {}: & controller.IngressReconciler {
183197 Client : mgr .GetClient (),
184198 Scheme : mgr .GetScheme (),
@@ -270,8 +284,12 @@ func registerReadinessGVK(mgr manager.Manager, readier readiness.ReadinessManage
270284 log := ctrl .LoggerFrom (context .Background ()).WithName ("readiness" )
271285
272286 registerV2ForReadinessGVK (mgr , readier , log )
273- registerGatewayAPIForReadinessGVK (mgr , readier , log )
274- registerV1alpha1ForReadinessGVK (mgr , readier , log )
287+ if ! config .ControllerConfig .DisableGatewayAPI {
288+ registerGatewayAPIForReadinessGVK (mgr , readier , log )
289+ registerV1alpha1ForReadinessGVK (mgr , readier , log )
290+ } else {
291+ log .Info ("Skipping Gateway API and v1alpha1 GVK registration for readiness checks as Gateway API is disabled" )
292+ }
275293}
276294
277295func registerV2ForReadinessGVK (mgr manager.Manager , readier readiness.ReadinessManager , log logr.Logger ) {
0 commit comments