From 432a04727616defaee9f49ead28c90bcbb40bb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Str=C3=B3zik?= Date: Mon, 14 Nov 2022 09:46:54 +0100 Subject: [PATCH] Migrate from RegisteredLoggers to the AtomicLevel (#16004) * migrate from loggers registry to the AtomicLevel * update resources * retrigger jobs * retrigger jobs --- .../function-controller/cmd/manager/main.go | 40 ++++++---- .../function-controller/cmd/webhook/main.go | 43 ++++++---- components/function-controller/go.mod | 4 +- components/function-controller/go.sum | 19 ++--- .../internal/logging/dynamic.go | 15 ++-- .../internal/logging/registry.go | 79 ------------------- .../internal/logging/setup.go | 5 +- .../internal/webhook/resources/resources.go | 7 +- resources/serverless/values.yaml | 6 +- 9 files changed, 76 insertions(+), 142 deletions(-) delete mode 100644 components/function-controller/internal/logging/registry.go diff --git a/components/function-controller/cmd/manager/main.go b/components/function-controller/cmd/manager/main.go index 4337c5b569f5..7301b32d3852 100644 --- a/components/function-controller/cmd/manager/main.go +++ b/components/function-controller/cmd/manager/main.go @@ -17,6 +17,8 @@ import ( serverlessv1alpha1 "github.com/kyma-project/kyma/components/function-controller/pkg/apis/serverless/v1alpha1" serverlessv1alpha2 "github.com/kyma-project/kyma/components/function-controller/pkg/apis/serverless/v1alpha2" "github.com/vrischmann/envconfig" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" "k8s.io/apimachinery/pkg/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" @@ -72,7 +74,15 @@ func main() { os.Exit(1) } - loggerRegistry, err := logging.ConfigureRegisteredLogger(logCfg.LogLevel, logCfg.LogFormat) + atomic := zap.NewAtomicLevel() + parsedLevel, err := zapcore.ParseLevel(logCfg.LogLevel) + if err != nil { + setupLog.Error(err, "unable to parse logger level") + os.Exit(1) + } + atomic.SetLevel(parsedLevel) + + log, err := logging.ConfigureLogger(logCfg.LogLevel, logCfg.LogFormat, atomic) if err != nil { setupLog.Error(err, "unable to configure log") os.Exit(1) @@ -81,19 +91,19 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - go logging.ReconfigureOnConfigChange(ctx, loggerRegistry, config.ConfigPath) + logWithCtx := log.WithContext() + go logging.ReconfigureOnConfigChange(ctx, logWithCtx.Named("notifier"), atomic, config.ConfigPath) - ctrl.SetLogger(zapr.NewLogger(loggerRegistry.CreateDesugared())) + ctrl.SetLogger(zapr.NewLogger(logWithCtx.Desugar())) - initLog := loggerRegistry.CreateUnregistered() - initLog.Info("Generating Kubernetes client config") + logWithCtx.Info("Generating Kubernetes client config") restConfig := ctrl.GetConfigOrDie() - initLog.Info("Registering Prometheus Stats Collector") + logWithCtx.Info("Registering Prometheus Stats Collector") prometheusCollector := metrics.NewPrometheusStatsCollector() prometheusCollector.Register() - initLog.Info("Initializing controller manager") + logWithCtx.Info("Initializing controller manager") mgr, err := manager.New(restConfig, manager.Options{ Scheme: scheme, MetricsBindAddress: config.MetricsAddress, @@ -112,7 +122,7 @@ func main() { secretSvc := k8s.NewSecretService(resourceClient, config.Kubernetes) serviceAccountSvc := k8s.NewServiceAccountService(resourceClient, config.Kubernetes) - healthHandler, healthEventsCh, healthResponseCh := serverless.NewHealthChecker(config.Healthz.LivenessTimeout, loggerRegistry.CreateNamed("healthz")) + healthHandler, healthEventsCh, healthResponseCh := serverless.NewHealthChecker(config.Healthz.LivenessTimeout, logWithCtx.Named("healthz")) if err := mgr.AddHealthzCheck("health check", healthHandler.Checker); err != nil { setupLog.Error(err, "unable to register healthz") os.Exit(1) @@ -123,13 +133,13 @@ func main() { os.Exit(1) } - err = gitrepo.NewGitRepoUpdateController(mgr.GetClient(), loggerRegistry.CreateNamed("controllers.gitrepo")).SetupWithManager(mgr) + err = gitrepo.NewGitRepoUpdateController(mgr.GetClient(), logWithCtx.Named("controllers.gitrepo")).SetupWithManager(mgr) if err != nil { setupLog.Error(err, "unable to create gitRepo controller") os.Exit(1) } - fnRecon := serverless.NewFunctionReconciler(resourceClient, loggerRegistry.CreateNamed("controllers.function"), config.Function, &git.GitClientFactory{}, mgr.GetEventRecorderFor(serverlessv1alpha2.FunctionControllerValue), prometheusCollector, healthResponseCh) + fnRecon := serverless.NewFunctionReconciler(resourceClient, logWithCtx.Named("controllers.function"), config.Function, &git.GitClientFactory{}, mgr.GetEventRecorderFor(serverlessv1alpha2.FunctionControllerValue), prometheusCollector, healthResponseCh) fnCtrl, err := fnRecon.SetupWithManager(mgr) if err != nil { setupLog.Error(err, "unable to create Function controller") @@ -142,25 +152,25 @@ func main() { os.Exit(1) } - if err := k8s.NewConfigMap(mgr.GetClient(), loggerRegistry.CreateNamed("controllers.configmap"), config.Kubernetes, configMapSvc). + if err := k8s.NewConfigMap(mgr.GetClient(), logWithCtx.Named("controllers.configmap"), config.Kubernetes, configMapSvc). SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create ConfigMap controller") os.Exit(1) } - if err := k8s.NewNamespace(mgr.GetClient(), loggerRegistry.CreateNamed("controllers.namespace"), config.Kubernetes, configMapSvc, secretSvc, serviceAccountSvc). + if err := k8s.NewNamespace(mgr.GetClient(), logWithCtx.Named("controllers.namespace"), config.Kubernetes, configMapSvc, secretSvc, serviceAccountSvc). SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create Namespace controller") os.Exit(1) } - if err := k8s.NewSecret(mgr.GetClient(), loggerRegistry.CreateNamed("controllers.secret"), config.Kubernetes, secretSvc). + if err := k8s.NewSecret(mgr.GetClient(), logWithCtx.Named("controllers.secret"), config.Kubernetes, secretSvc). SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create Secret controller") os.Exit(1) } - if err := k8s.NewServiceAccount(mgr.GetClient(), loggerRegistry.CreateNamed("controllers.serviceaccount"), config.Kubernetes, serviceAccountSvc). + if err := k8s.NewServiceAccount(mgr.GetClient(), logWithCtx.Named("controllers.serviceaccount"), config.Kubernetes, serviceAccountSvc). SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create ServiceAccount controller") os.Exit(1) @@ -168,7 +178,7 @@ func main() { // +kubebuilder:scaffold:builder - initLog.Info("Running manager") + logWithCtx.Info("Running manager") if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { setupLog.Error(err, "Unable to run the manager") diff --git a/components/function-controller/cmd/webhook/main.go b/components/function-controller/cmd/webhook/main.go index 7e846e0ce78c..b866e7fd7dca 100644 --- a/components/function-controller/cmd/webhook/main.go +++ b/components/function-controller/cmd/webhook/main.go @@ -13,6 +13,8 @@ import ( serverlessv1alpha2 "github.com/kyma-project/kyma/components/function-controller/pkg/apis/serverless/v1alpha2" "github.com/pkg/errors" "github.com/vrischmann/envconfig" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" "sigs.k8s.io/controller-runtime/pkg/manager" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" @@ -59,7 +61,15 @@ func main() { os.Exit(1) } - loggerRegistry, err := logging.ConfigureRegisteredLogger(logCfg.LogLevel, logCfg.LogFormat) + atomic := zap.NewAtomicLevel() + parsedLevel, err := zapcore.ParseLevel(logCfg.LogLevel) + if err != nil { + setupLog.Error(err, "unable to parse logger level") + os.Exit(1) + } + atomic.SetLevel(parsedLevel) + + log, err := logging.ConfigureLogger(logCfg.LogLevel, logCfg.LogFormat, atomic) if err != nil { setupLog.Error(err, "unable to configure log") os.Exit(1) @@ -68,20 +78,19 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - go logging.ReconfigureOnConfigChange(ctx, loggerRegistry, cfg.WebhookConfigPath) + logWithCtx := log.WithContext() + go logging.ReconfigureOnConfigChange(ctx, logWithCtx.Named("notifier"), atomic, cfg.WebhookConfigPath) - logrZap := zapr.NewLogger(loggerRegistry.CreateDesugared()) + logrZap := zapr.NewLogger(logWithCtx.Desugar()) ctrl.SetLogger(logrZap) - initLog := loggerRegistry.CreateUnregistered() - validationConfigv1alpha1 := webhook.ReadValidationConfigV1Alpha1OrDie() validationConfigv1alpha2 := webhook.ReadValidationConfigV1Alpha2OrDie() defaultingConfigv1alpha1 := webhook.ReadDefaultingConfigV1Alpha1OrDie() defaultingConfigv1alpha2 := webhook.ReadDefaultingConfigV1Alpha2OrDie() // manager setup - initLog.Info("setting up controller-manager") + logWithCtx.Info("setting up controller-manager") mgr, err := manager.New(ctrl.GetConfigOrDie(), manager.Options{ Scheme: scheme, @@ -90,11 +99,11 @@ func main() { Logger: logrZap, }) if err != nil { - initLog.Error(err, "failed to setup controller-manager") + logWithCtx.Error(err, "failed to setup controller-manager") os.Exit(1) } - initLog.Info("setting up webhook certificates and webhook secret") + logWithCtx.Info("setting up webhook certificates and webhook secret") // we need to ensure the certificates and the webhook secret as early as possible // because the webhook server needs to read it from disk to start. if err := resources.SetupCertificates( @@ -102,12 +111,12 @@ func main() { cfg.WebhookSecretName, cfg.SystemNamespace, cfg.WebhookServiceName, - loggerRegistry.CreateNamed("setup-certificates")); err != nil { - initLog.Error(err, "failed to setup certificates and webhook secret") + logWithCtx.Named("setup-certificates")); err != nil { + logWithCtx.Error(err, "failed to setup certificates and webhook secret") os.Exit(1) } - initLog.Info("setting up webhook server") + logWithCtx.Info("setting up webhook server") // webhook server setup whs := mgr.GetWebhookServer() whs.CertName = resources.CertFile @@ -116,7 +125,7 @@ func main() { webhook.NewConvertingWebhook( mgr.GetClient(), scheme, - loggerRegistry.CreateNamed("converting-webhook")), + logWithCtx.Named("converting-webhook")), ) whs.Register(resources.FunctionDefaultingWebhookPath, &ctrlwebhook.Admission{ Handler: webhook.NewDefaultingWebhook(defaultingConfigv1alpha1, defaultingConfigv1alpha2, mgr.GetClient()), @@ -128,7 +137,7 @@ func main() { whs.Register(resources.RegistryConfigDefaultingWebhookPath, &ctrlwebhook.Admission{Handler: webhook.NewRegistryWatcher()}) - initLog.Info("setting up webhook resources controller") + logWithCtx.Info("setting up webhook resources controller") // apply and monitor configuration if err := resources.SetupResourcesController( context.Background(), @@ -136,16 +145,16 @@ func main() { cfg.WebhookServiceName, cfg.SystemNamespace, cfg.WebhookSecretName, - loggerRegistry); err != nil { - initLog.Error(err, "failed to setup webhook resources controller") + logWithCtx); err != nil { + logWithCtx.Error(err, "failed to setup webhook resources controller") os.Exit(1) } - initLog.Info("starting the controller-manager") + logWithCtx.Info("starting the controller-manager") // start the server manager err = mgr.Start(ctrl.SetupSignalHandler()) if err != nil { - initLog.Error(err, "failed to start controller-manager") + logWithCtx.Error(err, "failed to start controller-manager") os.Exit(1) } } diff --git a/components/function-controller/go.mod b/components/function-controller/go.mod index 27abed8005cc..67eeb7ada154 100644 --- a/components/function-controller/go.mod +++ b/components/function-controller/go.mod @@ -4,6 +4,8 @@ go 1.19 replace ( github.com/aws/aws-sdk-go => github.com/aws/aws-sdk-go v1.42.52 + + github.com/kyma-project/kyma/common/logging => github.com/pPrecel/kyma/common/logging v0.0.0-20221103083340-8c749c35c79b github.com/prometheus/common => github.com/prometheus/common v0.26.0 go.etcd.io/etcd => go.etcd.io/etcd v3.3.25+incompatible golang.org/x/crypto => golang.org/x/crypto v0.0.0-20220213190939-1e6e3497d506 @@ -29,7 +31,7 @@ require ( github.com/stretchr/objx v0.2.0 // indirect github.com/stretchr/testify v1.7.0 github.com/vrischmann/envconfig v1.3.0 - go.uber.org/zap v1.19.1 + go.uber.org/zap v1.21.0 golang.org/x/crypto v0.0.0-20220214200702-86341886e292 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac gopkg.in/yaml.v2 v2.4.0 diff --git a/components/function-controller/go.sum b/components/function-controller/go.sum index 0799c13fc362..3614e7b1c38d 100644 --- a/components/function-controller/go.sum +++ b/components/function-controller/go.sum @@ -81,7 +81,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= @@ -157,7 +156,6 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= @@ -326,8 +324,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kyma-project/kyma/common/logging v0.0.0-20220602092229-f2e29f34ed5e h1:TXa89AtEDM9aNs3aBGlqb7rch+9piwZufF3ds96pzb4= -github.com/kyma-project/kyma/common/logging v0.0.0-20220602092229-f2e29f34ed5e/go.mod h1:7FWH0Lyls2xumj836aa+LVP8jhnJSv6wSlxC+2HAJ1s= github.com/libgit2/git2go/v31 v31.7.9 h1:RUDiYm7+i3GY414acI31oDD8x5P0PZyWeZZfwpPuynE= github.com/libgit2/git2go/v31 v31.7.9/go.mod h1:c/rkJcBcUFx6wHaT++UwNpKvIsmPNqCeQ/vzO4DrEec= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -378,6 +374,8 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pPrecel/kyma/common/logging v0.0.0-20221103083340-8c749c35c79b h1:7xPR9IZcvShl/squTYCemWSrFmdteYrhf5iJ9Gif2S8= +github.com/pPrecel/kyma/common/logging v0.0.0-20221103083340-8c749c35c79b/go.mod h1:oXoP77o6Am2IWp8wDS3jaA1gGWLrcaO6gLWyDZbAkJs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -487,24 +485,20 @@ go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4 go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= golang.org/x/crypto v0.0.0-20220213190939-1e6e3497d506 h1:EuGTJDfeg/PGZJp3gq1K+14eSLFTsrj1eg8KQuiUyKg= golang.org/x/crypto v0.0.0-20220213190939-1e6e3497d506/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -669,8 +663,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -908,7 +900,6 @@ k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAE k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.5.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= diff --git a/components/function-controller/internal/logging/dynamic.go b/components/function-controller/internal/logging/dynamic.go index 0b568fc61eb6..c39c0b0fdc05 100644 --- a/components/function-controller/internal/logging/dynamic.go +++ b/components/function-controller/internal/logging/dynamic.go @@ -4,18 +4,19 @@ import ( "context" "github.com/kyma-project/kyma/components/function-controller/internal/config" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" ) -func ReconfigureOnConfigChange(ctx context.Context, registry *Registry, cfgPath string) { - notifyLog := registry.CreateNamed("notifier") - - config.RunOnConfigChange(ctx, notifyLog, cfgPath, func(cfg config.Config) { - err := registry.Reconfigure(cfg.LogLevel, cfg.LogFormat) +func ReconfigureOnConfigChange(ctx context.Context, log *zap.SugaredLogger, atomic zap.AtomicLevel, cfgPath string) { + config.RunOnConfigChange(ctx, log, cfgPath, func(cfg config.Config) { + level, err := zapcore.ParseLevel(cfg.LogLevel) if err != nil { - notifyLog.Error(err) + log.Error(err) return } - notifyLog.Infof("loggers reconfigured with level '%s' and format '%s'", cfg.LogLevel, cfg.LogFormat) + atomic.SetLevel(level) + log.Infof("loggers reconfigured with level '%s' and format '%s'", cfg.LogLevel, cfg.LogFormat) }) } diff --git a/components/function-controller/internal/logging/registry.go b/components/function-controller/internal/logging/registry.go deleted file mode 100644 index 0fa381d6440e..000000000000 --- a/components/function-controller/internal/logging/registry.go +++ /dev/null @@ -1,79 +0,0 @@ -package logging - -import ( - "github.com/kyma-project/kyma/common/logging/logger" - "github.com/pkg/errors" - "go.uber.org/zap" -) - -// Registry is an structure that allows to modify logLevel and logFormat -// of the main logger and sub-loggers on the fly -type Registry struct { - logger *logger.Logger - desugaredLoggers []*zap.Logger - namedLoggers map[string]*zap.SugaredLogger -} - -// ConfigureRegisteredLogger - create new registry -func ConfigureRegisteredLogger(logLevel, logFormat string) (*Registry, error) { - r := &Registry{ - namedLoggers: map[string]*zap.SugaredLogger{}, - } - - err := r.Reconfigure(logLevel, logFormat) - return r, err -} - -// CreateNamed - create and register zap.SugaredLogger. Sub-loggers of the created one would be not registered -func (r *Registry) CreateNamed(name string) *zap.SugaredLogger { - l := r.createNamed(name) - r.namedLoggers[name] = l - return l -} - -// CreateDesugared - create and register zap.Logger. Sub-loggers of the created one would be not registered -func (r *Registry) CreateDesugared() *zap.Logger { - l := r.createDesugared() - r.desugaredLoggers = append(r.desugaredLoggers, l) - return l -} - -// CreateUnregistered - create zap.Logger without registration -func (r *Registry) CreateUnregistered() *zap.SugaredLogger { - return r.logger.WithContext() -} - -// Reconfigure - apply new configuration for the logger and all registered sub-loggers -func (r *Registry) Reconfigure(logLevel, logFormat string) error { - if r == nil { - return errors.New("registry object is nil") - } - - log, err := ConfigureLogger(logLevel, logFormat) - if err != nil { - return errors.Wrap(err, "unable to configure logger") - } - - r.logger = log - for key := range r.namedLoggers { - *r.namedLoggers[key] = *r.createNamed(key) - } - - for i := range r.desugaredLoggers { - *r.desugaredLoggers[i] = *r.createDesugared() - } - - return nil -} - -func (r *Registry) createNamed(name string) *zap.SugaredLogger { - l := r.logger.WithContext().Named(name) - - return l -} - -func (r *Registry) createDesugared() *zap.Logger { - l := r.logger.WithContext().Desugar() - - return l -} diff --git a/components/function-controller/internal/logging/setup.go b/components/function-controller/internal/logging/setup.go index 32964543ec6c..8da3191b42d4 100644 --- a/components/function-controller/internal/logging/setup.go +++ b/components/function-controller/internal/logging/setup.go @@ -3,10 +3,11 @@ package logging import ( "github.com/kyma-project/kyma/common/logging/logger" "github.com/pkg/errors" + "go.uber.org/zap" ) // ConfigureLogger - builds logger based on logLevel and logFormat -func ConfigureLogger(logLevel, logFormat string) (*logger.Logger, error) { +func ConfigureLogger(logLevel, logFormat string, atomic zap.AtomicLevel) (*logger.Logger, error) { parsedLogLevel, err := logger.MapLevel(logLevel) if err != nil { return nil, errors.Wrap(err, "unable to parse logging level") @@ -17,7 +18,7 @@ func ConfigureLogger(logLevel, logFormat string) (*logger.Logger, error) { return nil, errors.Wrap(err, "unable to set logging format") } - l, err := logger.New(format, parsedLogLevel) + l, err := logger.NewWithAtomicLevel(format, atomic) if err != nil { return nil, errors.Wrap(err, "unable to set logger") } diff --git a/components/function-controller/internal/webhook/resources/resources.go b/components/function-controller/internal/webhook/resources/resources.go index b99523811e3b..a3016d363ea3 100644 --- a/components/function-controller/internal/webhook/resources/resources.go +++ b/components/function-controller/internal/webhook/resources/resources.go @@ -8,7 +8,6 @@ import ( "go.uber.org/zap" - "github.com/kyma-project/kyma/components/function-controller/internal/logging" "github.com/pkg/errors" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" corev1 "k8s.io/api/core/v1" @@ -21,8 +20,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/source" ) -func SetupResourcesController(ctx context.Context, mgr ctrl.Manager, serviceName, serviceNamespace, secretName string, loggingRegistry *logging.Registry) error { - logger := loggingRegistry.CreateUnregistered().Named("resource-ctrl") +func SetupResourcesController(ctx context.Context, mgr ctrl.Manager, serviceName, serviceNamespace, secretName string, log *zap.SugaredLogger) error { + logger := log.Named("resource-ctrl") certPath := path.Join(DefaultCertDir, CertFile) certBytes, err := ioutil.ReadFile(certPath) if err != nil { @@ -59,7 +58,7 @@ func SetupResourcesController(ctx context.Context, mgr ctrl.Manager, serviceName webhookConfig: webhookConfig, client: mgr.GetClient(), secretName: secretName, - logger: loggingRegistry.CreateNamed("webhook-resource-controller"), + logger: log.Named("webhook-resource-controller"), }, }) if err != nil { diff --git a/resources/serverless/values.yaml b/resources/serverless/values.yaml index 290536e4ecc5..a49798f98838 100644 --- a/resources/serverless/values.yaml +++ b/resources/serverless/values.yaml @@ -80,13 +80,13 @@ global: directory: "tpi" function_controller: name: "function-controller" - version: "v20221110-7847bad7" + version: "PR-16004" function_webhook: name: "function-webhook" - version: "v20221110-7847bad7" + version: "PR-16004" function_build_init: name: "function-build-init" - version: "v20221110-7847bad7" + version: "PR-16004" function_runtime_nodejs14: name: "function-runtime-nodejs14" version: "v20221110-f5cb45c7"