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)
}
}