Skip to content

Commit 936c427

Browse files
committed
auditpolicycontroller: filter configmaps triggering this controller
Make sure that other configmap updates don't trigger auditpolicy controller - only target namespace / name configmap updates are making sync run. APIServer config and operator client informer events are not being filtered
1 parent a1cb8e0 commit 936c427

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

pkg/operator/apiserver/controller/auditpolicy/auditpolicy_controller.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,20 @@ func NewAuditPolicyController(
5959
targetConfigMapName: targetConfigMapName,
6060
}
6161

62-
return factory.New().WithSync(c.sync).WithControllerInstanceName(c.controllerInstanceName).ResyncEvery(1*time.Minute).WithInformers(
63-
configInformers.Config().V1().APIServers().Informer(),
64-
kubeInformersForTargetNamespace.Core().V1().ConfigMaps().Informer(),
65-
operatorClient.Informer(),
66-
).ToController(
62+
return factory.New().
63+
WithSync(c.sync).
64+
WithControllerInstanceName(c.controllerInstanceName).
65+
ResyncEvery(1*time.Minute).
66+
WithFilteredEventsInformers(func(obj interface{}) bool {
67+
if cm, ok := obj.(*v1.ConfigMap); ok {
68+
return cm.Namespace == targetNamespace && cm.Name == targetConfigMapName
69+
}
70+
return true
71+
},
72+
configInformers.Config().V1().APIServers().Informer(),
73+
kubeInformersForTargetNamespace.Core().V1().ConfigMaps().Informer(),
74+
operatorClient.Informer(),
75+
).ToController(
6776
"auditPolicyController", // don't change what is passed here unless you also remove the old FooDegraded condition
6877
eventRecorder.WithComponentSuffix("audit-policy-controller"),
6978
)

pkg/operator/apiserver/controllerset/apiservercontrollerset.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package apiservercontrollerset
33
import (
44
"context"
55
"fmt"
6-
"k8s.io/utils/clock"
76
"regexp"
87
"time"
98

9+
"k8s.io/utils/clock"
10+
1011
configv1 "github.com/openshift/api/config/v1"
1112
configv1client "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
1213
openshiftconfigclientv1 "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
@@ -31,6 +32,7 @@ import (
3132
"github.com/openshift/library-go/pkg/operator/status"
3233
"github.com/openshift/library-go/pkg/operator/unsupportedconfigoverridescontroller"
3334
"github.com/openshift/library-go/pkg/operator/v1helpers"
35+
corev1listers "k8s.io/client-go/listers/core/v1"
3436

3537
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3638
"k8s.io/apimachinery/pkg/labels"
@@ -405,7 +407,8 @@ func (cs *APIServerControllerSet) WithAuditPolicyController(
405407
targetNamespace string,
406408
targetConfigMapName string,
407409
configInformers configinformers.SharedInformerFactory,
408-
kubeInformersForTargetNamesace kubeinformers.SharedInformerFactory,
410+
kubeInformersForTargetNamespace kubeinformers.SharedInformerFactory,
411+
configMapLister corev1listers.ConfigMapNamespaceLister,
409412
kubeClient kubernetes.Interface,
410413
) *APIServerControllerSet {
411414
cs.auditPolicyController.controller = auditpolicy.NewAuditPolicyController(
@@ -415,7 +418,8 @@ func (cs *APIServerControllerSet) WithAuditPolicyController(
415418
cs.operatorClient,
416419
kubeClient,
417420
configInformers,
418-
kubeInformersForTargetNamesace,
421+
kubeInformersForTargetNamespace,
422+
configMapLister,
419423
cs.eventRecorder,
420424
)
421425
return cs

0 commit comments

Comments
 (0)