@@ -3,7 +3,6 @@ package ingress
3
3
import (
4
4
"context"
5
5
"fmt"
6
-
7
6
"github.com/go-logr/logr"
8
7
"github.com/pkg/errors"
9
8
corev1 "k8s.io/api/core/v1"
@@ -44,7 +43,10 @@ const (
44
43
// the groupVersion of used Ingress & IngressClass resource.
45
44
ingressResourcesGroupVersion = "networking.k8s.io/v1"
46
45
ingressClassKind = "IngressClass"
47
- ingressClassParams = "IngressClassParams"
46
+
47
+ // the groupVersion of used by IngressClassParams resource.
48
+ ingressClassParamsResourcesGroupVersion = "elbv2.k8s.aws/v1beta1"
49
+ ingressClassParamsKind = "IngressClassParams"
48
50
)
49
51
50
52
// NewGroupReconciler constructs new GroupReconciler
@@ -278,14 +280,20 @@ func (r *groupReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager
278
280
return err
279
281
}
280
282
281
- resList , err := clientSet .ServerResourcesForGroupVersion (ingressResourcesGroupVersion )
283
+ ingressClassResourceList , err := clientSet .ServerResourcesForGroupVersion (ingressResourcesGroupVersion )
282
284
if err != nil {
283
285
return err
284
286
}
285
287
286
- ingressClassParamsAvailable := isResourceKindAvailable (resList , ingressClassParams )
287
- ingressClassResourceAvailable := isResourceKindAvailable (resList , ingressClassKind )
288
- if err := r .setupIndexes (ctx , mgr .GetFieldIndexer (), ingressClassParamsAvailable , ingressClassResourceAvailable ); err != nil {
288
+ ingressClassParamsResourceList , err := clientSet .ServerResourcesForGroupVersion (ingressClassParamsResourcesGroupVersion )
289
+ if err != nil {
290
+ return err
291
+ }
292
+
293
+ ingressClassResourceAvailable := isResourceKindAvailable (ingressClassResourceList , ingressClassKind )
294
+
295
+ ingressClassParamsResourceAvailable := isResourceKindAvailable (ingressClassParamsResourceList , ingressClassParamsKind )
296
+ if err := r .setupIndexes (ctx , mgr .GetFieldIndexer (), ingressClassResourceAvailable , ingressClassParamsResourceAvailable ); err != nil {
289
297
return err
290
298
}
291
299
if err := r .setupWatches (ctx , c , mgr , ingressClassResourceAvailable , clientSet ); err != nil {
@@ -294,7 +302,7 @@ func (r *groupReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager
294
302
return nil
295
303
}
296
304
297
- func (r * groupReconciler ) setupIndexes (ctx context.Context , fieldIndexer client.FieldIndexer , ingressClassParamsAvailable bool , ingressClassResourceAvailable bool ) error {
305
+ func (r * groupReconciler ) setupIndexes (ctx context.Context , fieldIndexer client.FieldIndexer , ingressClassResourceAvailable bool , ingressClassParamsResourceAvailable bool ) error {
298
306
// Service indexes
299
307
if err := fieldIndexer .IndexField (ctx , & networking.Ingress {}, ingress .IndexKeyServiceRefName ,
300
308
func (obj client.Object ) []string {
@@ -304,21 +312,6 @@ func (r *groupReconciler) setupIndexes(ctx context.Context, fieldIndexer client.
304
312
return err
305
313
}
306
314
307
- // Secret indexes
308
- if ingressClassParamsAvailable {
309
- if err := fieldIndexer .IndexField (ctx , & elbv2api.IngressClassParams {}, ingress .IndexKeySecretRefName ,
310
- func (obj client.Object ) []string {
311
- ingClassParamsObj := obj .(* elbv2api.IngressClassParams )
312
- if ingClassParamsObj .Spec .AuthConfig != nil && ingClassParamsObj .Spec .AuthConfig .IDPConfigOIDC != nil {
313
- return []string {ingClassParamsObj .Spec .AuthConfig .IDPConfigOIDC .SecretName }
314
- }
315
- return nil
316
- },
317
- ); err != nil {
318
- return err
319
- }
320
- }
321
-
322
315
if err := fieldIndexer .IndexField (ctx , & networking.Ingress {}, ingress .IndexKeySecretRefName ,
323
316
func (obj client.Object ) []string {
324
317
return r .referenceIndexer .BuildSecretRefIndexes (context .Background (), & elbv2api.IngressClassParams {}, obj .(* networking.Ingress ))
@@ -351,6 +344,16 @@ func (r *groupReconciler) setupIndexes(ctx context.Context, fieldIndexer client.
351
344
return err
352
345
}
353
346
}
347
+
348
+ if ingressClassParamsResourceAvailable {
349
+ if err := fieldIndexer .IndexField (ctx , & elbv2api.IngressClassParams {}, ingress .IndexKeyIngressClassParamsSecretRefName ,
350
+ func (obj client.Object ) []string {
351
+ return r .referenceIndexer .BuildIngressClassParamsSecretIndexes (context .Background (), obj .(* elbv2api.IngressClassParams ))
352
+ },
353
+ ); err != nil {
354
+ return err
355
+ }
356
+ }
354
357
return nil
355
358
}
356
359
@@ -362,8 +365,7 @@ func (r *groupReconciler) setupWatches(_ context.Context, c controller.Controlle
362
365
r .logger .WithName ("eventHandlers" ).WithName ("ingress" ))
363
366
svcEventHandler := eventhandlers .NewEnqueueRequestsForServiceEvent (ingEventChan , r .k8sClient , r .eventRecorder ,
364
367
r .logger .WithName ("eventHandlers" ).WithName ("service" ))
365
- secretEventHandler := eventhandlers .NewEnqueueRequestsForSecretEvent (ingEventChan , svcEventChan , r .k8sClient , r .eventRecorder ,
366
- r .logger .WithName ("eventHandlers" ).WithName ("secret" ))
368
+
367
369
if err := c .Watch (source .Channel (ingEventChan , ingEventHandler )); err != nil {
368
370
return err
369
371
}
@@ -376,15 +378,11 @@ func (r *groupReconciler) setupWatches(_ context.Context, c controller.Controlle
376
378
if err := c .Watch (source .Kind (mgr .GetCache (), & corev1.Service {}, svcEventHandler )); err != nil {
377
379
return err
378
380
}
379
- // Add this watch for Secrets
380
- if err := c .Watch (source .Kind (mgr .GetCache (), & corev1.Secret {}, secretEventHandler )); err != nil {
381
- return err
382
- }
383
- if err := c .Watch (source .Channel (secretEventsChan , secretEventHandler )); err != nil {
384
- return err
385
- }
381
+
382
+ var ingressClassParamsEventChan chan event.TypedGenericEvent [* elbv2api.IngressClassParams ]
386
383
if ingressClassResourceAvailable {
387
384
ingClassEventChan := make (chan event.TypedGenericEvent [* networking.IngressClass ])
385
+ ingressClassParamsEventChan = make (chan event.TypedGenericEvent [* elbv2api.IngressClassParams ])
388
386
ingClassParamsEventHandler := eventhandlers .NewEnqueueRequestsForIngressClassParamsEvent (ingClassEventChan , r .k8sClient , r .eventRecorder ,
389
387
r .logger .WithName ("eventHandlers" ).WithName ("ingressClassParams" ))
390
388
ingClassEventHandler := eventhandlers .NewEnqueueRequestsForIngressClassEvent (ingEventChan , r .k8sClient , r .eventRecorder ,
@@ -398,7 +396,21 @@ func (r *groupReconciler) setupWatches(_ context.Context, c controller.Controlle
398
396
if err := c .Watch (source .Kind (mgr .GetCache (), & networking.IngressClass {}, ingClassEventHandler )); err != nil {
399
397
return err
400
398
}
399
+ if err := c .Watch (source .Channel (ingressClassParamsEventChan , ingClassParamsEventHandler )); err != nil {
400
+ return err
401
+ }
401
402
}
403
+
404
+ secretEventHandler := eventhandlers .NewEnqueueRequestsForSecretEvent (ingEventChan , svcEventChan , ingressClassParamsEventChan , r .k8sClient , r .eventRecorder ,
405
+ r .logger .WithName ("eventHandlers" ).WithName ("secret" ))
406
+ // Add this watch for Secrets
407
+ if err := c .Watch (source .Kind (mgr .GetCache (), & corev1.Secret {}, secretEventHandler )); err != nil {
408
+ return err
409
+ }
410
+ if err := c .Watch (source .Channel (secretEventsChan , secretEventHandler )); err != nil {
411
+ return err
412
+ }
413
+
402
414
r .secretsManager = k8s .NewSecretsManager (clientSet , secretEventsChan , ctrl .Log .WithName ("secrets-manager" ))
403
415
return nil
404
416
}
0 commit comments