Skip to content

Commit c59e473

Browse files
mprahlopenshift-merge-robot
authored andcommitted
Reduce memory utilization of caching events
This removes all unnecessary fields in an Event object before it is cached. Additionally, a field selector is added to avoid caching events unrelated to policy compliance. Relates: https://issues.redhat.com/browse/ACM-6063 Signed-off-by: mprahl <[email protected]>
1 parent c3f2764 commit c59e473

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

main.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
v1 "k8s.io/api/core/v1"
3030
extensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3131
extensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
32+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3233
"k8s.io/apimachinery/pkg/fields"
3334
"k8s.io/apimachinery/pkg/labels"
3435
k8sruntime "k8s.io/apimachinery/pkg/runtime"
@@ -68,6 +69,7 @@ var (
6869
eventsScheme = k8sruntime.NewScheme()
6970
log = ctrl.Log.WithName("setup")
7071
scheme = k8sruntime.NewScheme()
72+
eventFilter fields.Selector
7173
)
7274

7375
func printVersion() {
@@ -91,6 +93,14 @@ func init() {
9193
utilruntime.Must(gktemplatesv1.AddToScheme(scheme))
9294
utilruntime.Must(gktemplatesv1beta1.AddToScheme(scheme))
9395
utilruntime.Must(appsv1.AddToScheme(scheme))
96+
97+
// Filter out events not related to policy compliance
98+
eventFilter = fields.ParseSelectorOrDie(
99+
`involvedObject.kind=Policy,` +
100+
`reason!="PolicySpecSync",` +
101+
`reason!="PolicyTemplateSync",` +
102+
`reason!="PolicyStatusSync"`,
103+
)
94104
}
95105

96106
func main() {
@@ -392,6 +402,27 @@ func getManager(
392402
&admissionregistration.ValidatingWebhookConfiguration{}: {
393403
Field: fields.SelectorFromSet(fields.Set{"metadata.name": gatekeepersync.GatekeeperWebhookName}),
394404
},
405+
&v1.Event{}: {
406+
Field: eventFilter,
407+
Transform: func(obj interface{}) (interface{}, error) {
408+
event := obj.(*v1.Event)
409+
// Only cache fields that are utilized by the controllers.
410+
guttedEvent := &v1.Event{
411+
InvolvedObject: event.InvolvedObject,
412+
TypeMeta: event.TypeMeta,
413+
ObjectMeta: metav1.ObjectMeta{
414+
Name: event.ObjectMeta.Name,
415+
Namespace: event.ObjectMeta.Namespace,
416+
},
417+
LastTimestamp: event.LastTimestamp,
418+
Message: event.Message,
419+
Reason: event.Reason,
420+
EventTime: event.EventTime,
421+
}
422+
423+
return guttedEvent, nil
424+
},
425+
},
395426
},
396427
Namespaces: []string{tool.Options.ClusterNamespace},
397428
}

0 commit comments

Comments
 (0)