...

Source file src/edge-infra.dev/pkg/edge/monitoring/k8s/controllers/prometheusctl/controller.go

Documentation: edge-infra.dev/pkg/edge/monitoring/k8s/controllers/prometheusctl

     1  package prometheusctl
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"edge-infra.dev/pkg/k8s/runtime/controller"
     8  	"edge-infra.dev/pkg/lib/logging"
     9  
    10  	"k8s.io/apimachinery/pkg/runtime"
    11  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    12  	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    13  	ctrl "sigs.k8s.io/controller-runtime"
    14  
    15  	monitoringscheme "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/scheme"
    16  )
    17  
    18  // Run creates the manager, sets up the controller, and then starts everything.
    19  // It returns the created manager for testing purposes
    20  func Run(o ...controller.Option) error {
    21  	ctrl.SetLogger(logging.NewLogger().Logger)
    22  	log := ctrl.Log.WithName("setup")
    23  
    24  	cfg, err := newConfig(os.Args)
    25  	if err != nil {
    26  		log.Error(err, "failed to parse configuration")
    27  		return err
    28  	}
    29  
    30  	mgr, err := create(cfg, o...)
    31  	if err != nil {
    32  		log.Error(err, "failed to create manager")
    33  		return err
    34  	}
    35  
    36  	log.Info("starting manager")
    37  	if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
    38  		log.Error(err, "problem running manager")
    39  		return err
    40  	}
    41  
    42  	return nil
    43  }
    44  
    45  func create(cfg *config, o ...controller.Option) (ctrl.Manager, error) {
    46  	ctlCfg, opts := controller.ProcessOptions(o...)
    47  	opts.LeaderElectionID = "prometheusctl.edge.ncr.com"
    48  	opts.Scheme = createScheme()
    49  
    50  	mgr, err := ctrl.NewManager(ctlCfg, opts)
    51  	if err != nil {
    52  		return nil, fmt.Errorf("failed to create manager: %w", err)
    53  	}
    54  
    55  	if err = (&PrometheusStackdriverReconciler{
    56  		Client: mgr.GetClient(),
    57  		config: *cfg,
    58  	}).SetupWithManager(mgr); err != nil {
    59  		return nil, fmt.Errorf("failed to set up reconciler: %w", err)
    60  	}
    61  
    62  	return mgr, nil
    63  }
    64  
    65  func createScheme() *runtime.Scheme {
    66  	scheme := runtime.NewScheme()
    67  
    68  	utilruntime.Must(clientgoscheme.AddToScheme(scheme))
    69  	utilruntime.Must(monitoringscheme.AddToScheme(scheme))
    70  
    71  	return scheme
    72  }
    73  

View as plain text