From 94298968581be029578542e11286d2525788d355 Mon Sep 17 00:00:00 2001 From: Pierangelo Di Pilato Date: Wed, 22 Jan 2025 14:44:13 +0100 Subject: [PATCH 1/2] 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 --- pkg/reconciler/broker/controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index 7b3bb2eaef0..4cbd880d84b 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,7 @@ 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() configmapInformer := configmapinformer.Get(ctx) secretInformer := secretinformer.Get(ctx) eventPolicyInformer := eventpolicyinformer.Get(ctx) From 060934f24c4e1f9ac5ba12385b3dbaa2e3ea2c21 Mon Sep 17 00:00:00 2001 From: Pierangelo Di Pilato Date: Wed, 22 Jan 2025 15:32:44 +0100 Subject: [PATCH 2/2] Start informer Signed-off-by: Pierangelo Di Pilato --- pkg/reconciler/broker/controller.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/reconciler/broker/controller.go b/pkg/reconciler/broker/controller.go index 4cbd880d84b..a9a7524ad83 100644 --- a/pkg/reconciler/broker/controller.go +++ b/pkg/reconciler/broker/controller.go @@ -69,7 +69,12 @@ func NewController( logger := logging.FromContext(ctx) brokerInformer := brokerinformer.Get(ctx) subscriptionInformer := subscriptioninformer.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)