@@ -66,12 +66,8 @@ import (
66
66
"github.com/spf13/viper"
67
67
"google.golang.org/grpc"
68
68
"google.golang.org/protobuf/types/known/durationpb"
69
- v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
70
- apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
71
- apiextensionsinformer "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1"
72
69
"k8s.io/client-go/kubernetes"
73
70
"k8s.io/client-go/rest"
74
- "k8s.io/client-go/tools/cache"
75
71
)
76
72
77
73
var (
@@ -401,8 +397,22 @@ func tetragonExecuteCtx(ctx context.Context, cancel context.CancelFunc, ready fu
401
397
// Start controller-runtime manager.
402
398
controllerManager = manager .Get ()
403
399
controllerManager .Start (ctx )
400
+ crds := make (map [string ]struct {})
401
+ if option .Config .EnableTracingPolicyCRD {
402
+ crds [v1alpha1 .TPName ] = struct {}{}
403
+ crds [v1alpha1 .TPNamespacedName ] = struct {}{}
404
+ }
405
+ if option .Config .EnablePodInfo {
406
+ crds [v1alpha1 .PIName ] = struct {}{}
407
+ }
408
+ if len (crds ) > 0 {
409
+ err = controllerManager .WaitCRDs (ctx , crds )
410
+ if err != nil {
411
+ return err
412
+ }
413
+ }
404
414
// retrieve k8s clients
405
- k8sClient , _ , err = watcher .GetK8sClients (waitCRDs )
415
+ k8sClient , _ , err = watcher .GetK8sClients (func ( _ * rest. Config ) error { return nil } )
406
416
if err != nil {
407
417
return err
408
418
}
@@ -539,57 +549,6 @@ func tetragonExecuteCtx(ctx context.Context, cancel context.CancelFunc, ready fu
539
549
return obs .StartReady (ctx , ready )
540
550
}
541
551
542
- func waitCRDs (config * rest.Config ) error {
543
- crds := make (map [string ]struct {})
544
-
545
- if option .Config .EnableTracingPolicyCRD {
546
- crds [v1alpha1 .TPName ] = struct {}{}
547
- crds [v1alpha1 .TPNamespacedName ] = struct {}{}
548
- }
549
- if option .Config .EnablePodInfo {
550
- crds [v1alpha1 .PIName ] = struct {}{}
551
- }
552
-
553
- if len (crds ) == 0 {
554
- log .Info ("No CRDs are enabled" )
555
- return nil
556
- }
557
-
558
- log .WithField ("crds" , crds ).Info ("Waiting for required CRDs" )
559
- var wg sync.WaitGroup
560
- wg .Add (1 )
561
- crdClient := apiextensionsclientset .NewForConfigOrDie (config )
562
- crdInformer := apiextensionsinformer .NewCustomResourceDefinitionInformer (crdClient , 0 * time .Second , nil )
563
- _ , err := crdInformer .AddEventHandler (cache.ResourceEventHandlerFuncs {
564
- AddFunc : func (obj interface {}) {
565
- crdObject , ok := obj .(* v1.CustomResourceDefinition )
566
- if ! ok {
567
- log .WithField ("obj" , obj ).Warn ("Received an invalid object" )
568
- return
569
- }
570
- if _ , ok := crds [crdObject .Name ]; ok {
571
- log .WithField ("crd" , crdObject .Name ).Info ("Found CRD" )
572
- delete (crds , crdObject .Name )
573
- if len (crds ) == 0 {
574
- log .Info ("Found all the required CRDs" )
575
- wg .Done ()
576
- }
577
- }
578
- },
579
- })
580
- if err != nil {
581
- log .WithError (err ).Error ("failed to add event handler" )
582
- return err
583
- }
584
- stop := make (chan struct {})
585
- go func () {
586
- crdInformer .Run (stop )
587
- }()
588
- wg .Wait ()
589
- close (stop )
590
- return nil
591
- }
592
-
593
552
func loadTpFromDir (ctx context.Context , dir string ) error {
594
553
if _ , err := os .Stat (dir ); err != nil {
595
554
// Do not fail if the default directory doesn't exist,
0 commit comments