From 37c9dff5436183fd5aabbf49da7844bd1f8a16bc Mon Sep 17 00:00:00 2001 From: Knative Prow Robot Date: Wed, 22 Jan 2025 16:37:11 +0000 Subject: [PATCH] [release-1.15] Reduce mt-broker-controller memory usage with namespaced endpoint informer (#8420) * 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. Signed-off-by: Pierangelo Di Pilato * Start informer Signed-off-by: Pierangelo Di Pilato --------- 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 bbf9f4117c4..c1454f3a987 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)