func main()

in main.go [58:140]


func main() {
	initLogger, _ := getLoggerWithLogLevel("info", "")

	ctrlConfig, err := loadControllerConfig()
	if err != nil {
		initLogger.Error(err, "unable to load policy endpoint controller config")
		os.Exit(1)
	}

	ctrlLogger, err := getLoggerWithLogLevel(ctrlConfig.LogLevel, ctrlConfig.LogFile)
	if err != nil {
		initLogger.Error(err, "unable to setup logger")
		os.Exit(1)
	}
	ctrl.SetLogger(ctrlLogger)
	restCFG, err := config.BuildRestConfig(ctrlConfig.RuntimeConfig)
	if err != nil {
		setupLog.Error(err, "unable to build REST config")
		os.Exit(1)
	}

	runtimeOpts := config.BuildRuntimeOptions(ctrlConfig.RuntimeConfig, scheme)
	mgr, err := ctrl.NewManager(restCFG, runtimeOpts)
	if err != nil {
		setupLog.Error(err, "unable to create controller manager")
		os.Exit(1)
	}

	err = ctrlConfig.ValidControllerFlags()
	if err != nil {
		setupLog.Error(err, "Controller flags validation failed")
		os.Exit(1)
	}

	ctx := ctrl.SetupSignalHandler()
	var policyEndpointController *controllers.PolicyEndpointsReconciler
	if ctrlConfig.EnableNetworkPolicy {
		setupLog.Info("Network Policy is enabled, registering the policyEndpointController...")
		policyEndpointController, err = controllers.NewPolicyEndpointsReconciler(mgr.GetClient(),
			ctrl.Log.WithName("controllers").WithName("policyEndpoints"), ctrlConfig.EnablePolicyEventLogs, ctrlConfig.EnableCloudWatchLogs,
			ctrlConfig.EnableIPv6, ctrlConfig.EnableNetworkPolicy, ctrlConfig.ConntrackCacheCleanupPeriod, ctrlConfig.ConntrackCacheTableSize)
		if err != nil {
			setupLog.Error(err, "unable to setup controller", "controller", "PolicyEndpoints init failed")
			os.Exit(1)
		}

		if err = policyEndpointController.SetupWithManager(ctx, mgr); err != nil {
			setupLog.Error(err, "unable to create controller", "controller", "PolicyEndpoints")
			os.Exit(1)
		}
	} else {
		setupLog.Info("Network Policy is disabled, skip the policyEndpointController registration")
	}

	//+kubebuilder:scaffold:builder

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

	// CNI makes rpc calls to NP agent regardless NP is enabled or not
	// need to start rpc always
	go func() {
		if err := rpc.RunRPCHandler(policyEndpointController); err != nil {
			setupLog.Error(err, "Failed to set up gRPC Handler")
			os.Exit(1)
		}
	}()

	go metrics.ServeMetrics()

	setupLog.Info("starting manager")
	if err := mgr.Start(ctx); err != nil {
		setupLog.Error(err, "problem running manager")
		os.Exit(1)
	}

}