From 125b0dc52476a54c81d21e45c6bc50da54e9e9ef Mon Sep 17 00:00:00 2001 From: OpenShift Cherrypick Robot Date: Wed, 29 Jan 2025 11:51:39 +0100 Subject: [PATCH] Reduce mt-broker-controller memory usage with namespaced endpoint informer (#8418) (#1012) * Reduce mt-broker-controller memory usage with namespaced endpoint informer Currently, the mt-broker-controller is using a cluster-wide endpoints informer but it actually only uses endpoints in the "SYSTEM_NAMESPACE". Using the namespaced informer factory ensures that the watcher is only watching endpoints in the `knative-eventing` (also known as `SYSTEM_NAMESPACE`) namespace. * Start informer --------- Signed-off-by: Pierangelo Di Pilato Co-authored-by: Pierangelo Di Pilato --- pkg/reconciler/broker/controller.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index 7b3bb2eaef0..a9a7524ad83 100644 --- a/pkg/reconciler/broker/controller.go +++ b/pkg/reconciler/broker/controller.go @@ -25,11 +25,11 @@ import ( "k8s.io/client-go/tools/cache" "knative.dev/pkg/apis" configmapinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/configmap" - endpointsinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/endpoints" "knative.dev/pkg/configmap" "knative.dev/pkg/controller" "knative.dev/pkg/injection/clients/dynamicclient" secretinformer "knative.dev/pkg/injection/clients/namespacedkube/informers/core/v1/secret" + namespacedinformerfactory "knative.dev/pkg/injection/clients/namespacedkube/informers/factory" "knative.dev/pkg/logging" pkgreconciler "knative.dev/pkg/reconciler" "knative.dev/pkg/resolver" @@ -69,7 +69,12 @@ func NewController( logger := logging.FromContext(ctx) brokerInformer := brokerinformer.Get(ctx) subscriptionInformer := subscriptioninformer.Get(ctx) - endpointsInformer := endpointsinformer.Get(ctx) + + endpointsInformer := namespacedinformerfactory.Get(ctx).Core().V1().Endpoints() + if err := controller.StartInformers(ctx.Done(), endpointsInformer.Informer()); err != nil { + logger.Fatalw("Failed to start namespaced endpoints informer", zap.Error(err)) + } + configmapInformer := configmapinformer.Get(ctx) secretInformer := secretinformer.Get(ctx) eventPolicyInformer := eventpolicyinformer.Get(ctx)