@@ -40,6 +40,7 @@ import (
4040 "github.com/apache/apisix-ingress-controller/internal/provider"
4141 types "github.com/apache/apisix-ingress-controller/internal/types"
4242 "github.com/apache/apisix-ingress-controller/pkg/utils"
43+ "github.com/go-logr/logr"
4344)
4445
4546// K8s
@@ -105,8 +106,8 @@ func setupControllers(ctx context.Context, mgr manager.Manager, pro provider.Pro
105106 setupLog := ctrl .LoggerFrom (ctx ).WithName ("setup" )
106107 var controllers []Controller
107108
108- icgv := v1 .SchemeGroupVersion
109- if ! utils .HasAPIResource (mgr , & v1 .IngressClass {}) {
109+ icgv := netv1 .SchemeGroupVersion
110+ if ! utils .HasAPIResource (mgr , & netv1 .IngressClass {}) {
110111 setupLog .Info ("IngressClass v1 not found, falling back to IngressClass v1beta1" )
111112 icgv = v1beta1 .SchemeGroupVersion
112113 controllers = append (controllers , & controller.IngressClassV1beta1Reconciler {
@@ -148,15 +149,15 @@ func setupControllers(ctx context.Context, mgr manager.Manager, pro provider.Pro
148149 Updater : updater ,
149150 Readier : readier ,
150151 },
151- & v1 .Ingress {}: & controller.IngressReconciler {
152+ & netv1 .Ingress {}: & controller.IngressReconciler {
152153 Client : mgr .GetClient (),
153154 Scheme : mgr .GetScheme (),
154155 Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName ("Ingress" ),
155156 Provider : pro ,
156157 Updater : updater ,
157158 Readier : readier ,
158159 },
159- & v1 .IngressClass {}: & controller.IngressClassReconciler {
160+ & netv1 .IngressClass {}: & controller.IngressClassReconciler {
160161 Client : mgr .GetClient (),
161162 Scheme : mgr .GetScheme (),
162163 Log : ctrl .LoggerFrom (ctx ).WithName ("controllers" ).WithName ("IngressClass" ),
@@ -235,52 +236,78 @@ func setupControllers(ctx context.Context, mgr manager.Manager, pro provider.Pro
235236 return controllers , nil
236237}
237238
238- var skip = true
239-
240239func registerReadinessGVK (mgr manager.Manager , readier readiness.ReadinessManager ) {
241- if skip {
242- return
243- }
244- c := mgr .GetClient ()
245240 log := ctrl .LoggerFrom (context .Background ()).WithName ("readiness" )
246241
247- icgvk := types .GvkOf (& v1.IngressClass {})
242+ registerV2ForReadinessGVK (mgr , readier , log )
243+ registerGatewayAPIForReadinessGVK (mgr , readier , log )
244+ registerV1alpha1ForReadinessGVK (mgr , readier , log )
245+ }
246+
247+ func registerV2ForReadinessGVK (mgr manager.Manager , readier readiness.ReadinessManager , log logr.Logger ) {
248+ icgv := v1 .SchemeGroupVersion
248249 if ! utils .HasAPIResource (mgr , & v1.IngressClass {}) {
249- icgvk = types . GvkOf ( & v1beta1.IngressClass {})
250+ icgv = v1beta1 .SchemeGroupVersion
250251 }
251252
252- readier .RegisterGVK ([]readiness.GVKConfig {
253- {
254- GVKs : []schema.GroupVersionKind {
255- types .GvkOf (& gatewayv1.HTTPRoute {}),
256- },
257- },
258- {
259- GVKs : []schema.GroupVersionKind {
260- types .GvkOf (& netv1.Ingress {}),
261- types .GvkOf (& apiv2.ApisixRoute {}),
262- types .GvkOf (& apiv2.ApisixGlobalRule {}),
263- types .GvkOf (& apiv2.ApisixPluginConfig {}),
264- types .GvkOf (& apiv2.ApisixTls {}),
265- types .GvkOf (& apiv2.ApisixConsumer {}),
266- },
267- Filter : readiness .GVKFilter (func (obj * unstructured.Unstructured ) bool {
268- icName , _ , _ := unstructured .NestedString (obj .Object , "spec" , "ingressClassName" )
269- ingressClass , _ := controller .GetIngressClass (context .Background (), c , log , icName , icgvk .Version )
270- return ingressClass != nil
271- }),
272- },
273- {
274- GVKs : []schema.GroupVersionKind {
275- types .GvkOf (& v1alpha1.Consumer {}),
276- },
277- Filter : readiness .GVKFilter (func (obj * unstructured.Unstructured ) bool {
278- consumer := & v1alpha1.Consumer {}
279- if err := runtime .DefaultUnstructuredConverter .FromUnstructured (obj .Object , consumer ); err != nil {
280- return false
281- }
282- return controller .MatchConsumerGatewayRef (context .Background (), c , log , consumer )
283- }),
284- },
285- }... )
253+ gvks := []schema.GroupVersionKind {
254+ types .GvkOf (& apiv2.ApisixRoute {}),
255+ types .GvkOf (& apiv2.ApisixGlobalRule {}),
256+ types .GvkOf (& apiv2.ApisixPluginConfig {}),
257+ types .GvkOf (& apiv2.ApisixTls {}),
258+ types .GvkOf (& apiv2.ApisixConsumer {}),
259+ }
260+ if utils .HasAPIResource (mgr , & netv1.Ingress {}) {
261+ gvks = append (gvks , types .GvkOf (& netv1.IngressClass {}))
262+ }
263+
264+ c := mgr .GetClient ()
265+ readier .RegisterGVK (readiness.GVKConfig {
266+ GVKs : gvks ,
267+ Filter : readiness .GVKFilter (func (obj * unstructured.Unstructured ) bool {
268+ icName , _ , _ := unstructured .NestedString (obj .Object , "spec" , "ingressClassName" )
269+ ingressClass , _ := controller .GetIngressClass (context .Background (), c , log , icName , icgv .String ())
270+ return ingressClass != nil
271+ }),
272+ })
273+ }
274+
275+ func registerGatewayAPIForReadinessGVK (mgr manager.Manager , readier readiness.ReadinessManager , log logr.Logger ) {
276+ gvks := []schema.GroupVersionKind {}
277+ if utils .HasAPIResource (mgr , & gatewayv1.HTTPRoute {}) {
278+ gvks = append (gvks , types .GvkOf (& gatewayv1.HTTPRoute {}))
279+ }
280+ if len (gvks ) == 0 {
281+ return
282+ }
283+
284+ readier .RegisterGVK (readiness.GVKConfig {
285+ GVKs : gvks ,
286+ })
287+ }
288+
289+ func registerV1alpha1ForReadinessGVK (mgr manager.Manager , readier readiness.ReadinessManager , log logr.Logger ) {
290+ gvks := []schema.GroupVersionKind {}
291+
292+ for _ , resource := range []client.Object {
293+ & v1alpha1.Consumer {},
294+ } {
295+ if utils .HasAPIResource (mgr , resource ) {
296+ gvks = append (gvks , types .GvkOf (resource ))
297+ }
298+ }
299+ if len (gvks ) == 0 {
300+ return
301+ }
302+ c := mgr .GetClient ()
303+ readier .RegisterGVK (readiness.GVKConfig {
304+ GVKs : gvks ,
305+ Filter : readiness .GVKFilter (func (obj * unstructured.Unstructured ) bool {
306+ consumer := & v1alpha1.Consumer {}
307+ if err := runtime .DefaultUnstructuredConverter .FromUnstructured (obj .Object , consumer ); err != nil {
308+ return false
309+ }
310+ return controller .MatchConsumerGatewayRef (context .Background (), c , log , consumer )
311+ }),
312+ })
286313}
0 commit comments