From fc047f9516a7a5adc372deca4ca1d350e5aa424a Mon Sep 17 00:00:00 2001 From: Sunny Date: Tue, 3 Jan 2023 18:23:54 +0000 Subject: [PATCH] ImagePolicy: Add predicates to filter events ImagePolicy watcher adds every change to its own kind in the work queue which results in unnecessary multiple reconciliations. Add a predicate to allow own kind events only on generation change. Signed-off-by: Sunny --- controllers/imagepolicy_controller.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/controllers/imagepolicy_controller.go b/controllers/imagepolicy_controller.go index 28b05901..729863d7 100644 --- a/controllers/imagepolicy_controller.go +++ b/controllers/imagepolicy_controller.go @@ -28,10 +28,12 @@ import ( kuberecorder "k8s.io/client-go/tools/record" "k8s.io/client-go/tools/reference" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/handler" + "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/ratelimiter" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" @@ -260,7 +262,7 @@ func (r *ImagePolicyReconciler) SetupWithManager(mgr ctrl.Manager, opts ImagePol } return ctrl.NewControllerManagedBy(mgr). - For(&imagev1.ImagePolicy{}). + For(&imagev1.ImagePolicy{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches( &source.Kind{Type: &imagev1.ImageRepository{}}, handler.EnqueueRequestsFromMapFunc(r.imagePoliciesForRepository),