From e438bc0561a65ff958594e56eafd4598d0cc09ab Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 5 Nov 2024 10:52:52 +0100 Subject: [PATCH] Rework event recorder startup * Remove Controller.recorder field, there already is eventRecorder. * Start the event broadcaster in Run(), to save a bit of CPU and memory when something initializes the controller, but does not Run() it. * Log events with log level 3, as the other contollers usually do. * Use StartStructuredLogging(), which looks fancier than StartLogging --- .../selinuxwarning/selinux_warning_controller.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/controller/volume/selinuxwarning/selinux_warning_controller.go b/pkg/controller/volume/selinuxwarning/selinux_warning_controller.go index e531e3c1c3d..9e82899d1dd 100644 --- a/pkg/controller/volume/selinuxwarning/selinux_warning_controller.go +++ b/pkg/controller/volume/selinuxwarning/selinux_warning_controller.go @@ -75,10 +75,9 @@ type Controller struct { cmpm csimigration.PluginManager csiTranslator csimigration.InTreeToCSITranslator seLinuxTranslator volumeutil.SELinuxLabelTranslator + eventBroadcaster record.EventBroadcaster eventRecorder record.EventRecorder - - recorder record.EventRecorder - queue workqueue.TypedRateLimitingInterface[cache.ObjectName] + queue workqueue.TypedRateLimitingInterface[cache.ObjectName] labelCache volumecache.VolumeCache } @@ -95,8 +94,6 @@ func NewController( ) (*Controller, error) { eventBroadcaster := record.NewBroadcaster(record.WithContext(ctx)) - eventBroadcaster.StartLogging(klog.Infof) - eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")}) recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "selinux_warning"}) c := &Controller{ kubeClient: kubeClient, @@ -112,15 +109,15 @@ func NewController( vpm: &volume.VolumePluginMgr{}, seLinuxTranslator: volumeutil.NewSELinuxLabelTranslator(), - recorder: recorder, + eventBroadcaster: eventBroadcaster, + eventRecorder: recorder, queue: workqueue.NewTypedRateLimitingQueueWithConfig[cache.ObjectName]( workqueue.DefaultTypedControllerRateLimiter[cache.ObjectName](), workqueue.TypedRateLimitingQueueConfig[cache.ObjectName]{ Name: "selinux_warning", }, ), - labelCache: volumecache.NewVolumeLabelCache(), - eventRecorder: recorder, + labelCache: volumecache.NewVolumeLabelCache(), } err := c.vpm.InitPlugins(plugins, prober, c) @@ -346,6 +343,9 @@ func (c *Controller) Run(ctx context.Context, workers int) { logger.Info("Starting SELinux warning controller") defer logger.Info("Shutting down SELinux warning controller") + c.eventBroadcaster.StartStructuredLogging(3) // verbosity level 3 is used by the other KCM controllers + c.eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: c.kubeClient.CoreV1().Events("")}) + if !cache.WaitForNamedCacheSync("selinux_warning", ctx.Done(), c.podsSynced, c.pvcsSynced, c.pvsSynced, c.csiDriversSynced) { return }