diff --git a/pkg/controllers/report/aggregate/controller.go b/pkg/controllers/report/aggregate/controller.go index 66f543c5bc..d5f83c81d2 100644 --- a/pkg/controllers/report/aggregate/controller.go +++ b/pkg/controllers/report/aggregate/controller.go @@ -220,7 +220,8 @@ func (c *controller) reconcileReport(ctx context.Context, policyMap map[string]p return reportutils.CreateReport(ctx, report, c.client) } after := reportutils.DeepCopy(report) - after.SetLabels(nil) + // hold custom labels + reportutils.CleanupKyvernoLabels(after) reportutils.SetManagedByKyvernoLabel(after) for _, result := range results { policy := policyMap[result.Policy] diff --git a/pkg/utils/report/labels.go b/pkg/utils/report/labels.go index 528b39c359..7e89097106 100644 --- a/pkg/utils/report/labels.go +++ b/pkg/utils/report/labels.go @@ -17,6 +17,7 @@ import ( ) const ( + LabelDomain = "kyverno.io" // resource labels LabelResourceHash = "audit.kyverno.io/resource.hash" LabelResourceUid = "audit.kyverno.io/resource.uid" @@ -66,6 +67,15 @@ func PolicyLabel(policy kyvernov1.PolicyInterface) string { return PolicyLabelPrefix(policy) + policy.GetName() } +func CleanupKyvernoLabels(obj metav1.Object) { + labels := obj.GetLabels() + for key := range labels { + if strings.Contains(key, LabelDomain) { + delete(labels, key) + } + } +} + func SetManagedByKyvernoLabel(obj metav1.Object) { controllerutils.SetLabel(obj, kyvernov1.LabelAppManagedBy, kyvernov1.ValueKyvernoApp) }