func Run()

in cmd/controller/app/server.go [43:97]


func Run(s *ServerRunOptions) error {
	config := ctrl.GetConfigOrDie()
	config.QPS = float32(s.ApiServerQPS)
	config.Burst = s.ApiServerBurst

	// Controller Runtime Controllers
	ctrl.SetLogger(klogr.New())
	mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
		Scheme: scheme,
		Metrics: metricsserver.Options{
			BindAddress: s.MetricsAddr,
		},
		HealthProbeBindAddress:  s.ProbeAddr,
		LeaderElection:          s.EnableLeaderElection,
		LeaderElectionID:        "sched-plugins-controllers",
		LeaderElectionNamespace: "kube-system",
	})
	if err != nil {
		setupLog.Error(err, "unable to start manager")
		return err
	}

	if err = (&controllers.PodGroupReconciler{
		Client:  mgr.GetClient(),
		Scheme:  mgr.GetScheme(),
		Workers: s.Workers,
	}).SetupWithManager(mgr); err != nil {
		setupLog.Error(err, "unable to create controller", "controller", "PodGroup")
		return err
	}

	if err = (&controllers.ElasticQuotaReconciler{
		Client:  mgr.GetClient(),
		Scheme:  mgr.GetScheme(),
		Workers: s.Workers,
	}).SetupWithManager(mgr); err != nil {
		setupLog.Error(err, "unable to create controller", "controller", "ElasticQuota")
		return err
	}

	if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
		setupLog.Error(err, "unable to set up health check")
		return err
	}
	if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
		setupLog.Error(err, "unable to set up ready check")
		return err
	}

	if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
		setupLog.Error(err, "unable to start manager")
		return err
	}
	return nil
}