1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-30 19:35:06 +00:00

refactor: split main into funcs (#4795)

Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
Charles-Edouard Brétéché 2022-10-03 18:34:56 +02:00 committed by GitHub
parent 1f41c2b84a
commit 29696c106a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -55,6 +55,7 @@ import (
"k8s.io/client-go/kubernetes"
metadataclient "k8s.io/client-go/metadata"
metadatainformers "k8s.io/client-go/metadata/metadatainformer"
"k8s.io/client-go/rest"
)
const (
@ -140,6 +141,32 @@ func showStartup(logger logr.Logger) {
}
}
func startProfiling(logger logr.Logger) {
logger = logger.WithName("profiling")
if profile {
addr := ":" + profilePort
logger.Info("Enable profiling, see details at https://github.com/kyverno/kyverno/wiki/Profiling-Kyverno-on-Kubernetes", "port", profilePort)
go func() {
if err := http.ListenAndServe(addr, nil); err != nil {
logger.Error(err, "Failed to enable profiling")
os.Exit(1)
}
}()
}
}
func createKubeClient() (*rest.Config, *kubernetes.Clientset, error) {
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
if err != nil {
return nil, nil, err
}
kubeClient, err := kubernetes.NewForConfig(clientConfig)
if err != nil {
return nil, nil, err
}
return clientConfig, kubeClient, nil
}
func main() {
// parse flags
if err := parseFlags(); err != nil {
@ -152,6 +179,14 @@ func main() {
os.Exit(1)
}
logger := logging.WithName("setup")
// start profiling
startProfiling(logger)
// create client config and kube client
clientConfig, kubeClient, err := createKubeClient()
if err != nil {
logger.Error(err, "failed to create kube client")
os.Exit(1)
}
// show startup message
showStartup(logger)
// os signal handler
@ -160,19 +195,6 @@ func main() {
debug := serverIP != ""
// clients
clientConfig, err := config.CreateClientConfig(kubeconfig, clientRateLimitQPS, clientRateLimitBurst)
if err != nil {
logger.Error(err, "Failed to build kubeconfig")
os.Exit(1)
}
kubeClient, err := kubernetes.NewForConfig(clientConfig)
if err != nil {
logger.Error(err, "Failed to create kubernetes client")
os.Exit(1)
}
// Metrics Configuration
var metricsConfig *metrics.MetricsConfig
metricsConfigData, err := config.NewMetricsConfigData(kubeClient)
@ -224,17 +246,6 @@ func main() {
os.Exit(1)
}
if profile {
addr := ":" + profilePort
logger.V(2).Info("Enable profiling, see details at https://github.com/kyverno/kyverno/wiki/Profiling-Kyverno-on-Kubernetes", "port", profilePort)
go func() {
if err := http.ListenAndServe(addr, nil); err != nil {
logger.Error(err, "Failed to enable profiling")
os.Exit(1)
}
}()
}
// informer factories
kubeInformer := kubeinformers.NewSharedInformerFactory(kubeClient, resyncPeriod)
kubeKyvernoInformer := kubeinformers.NewSharedInformerFactoryWithOptions(kubeClient, resyncPeriod, kubeinformers.WithNamespace(config.KyvernoNamespace()))