Skip to content

Commit b3f222c

Browse files
committed
staticpodcontroller: require a separate informer for cluster-level events
An informer for an empty namespace will list resources from all namespaces and cluster level. This may be undesirable, as this make the controller react to events from different namespaces, while we're only interested in cluster-level events. Splitting this into a separate set of infomers will prevent that
1 parent 7f9bc3e commit b3f222c

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

pkg/operator/staticpod/controllers.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,16 @@ import (
3232
v1 "k8s.io/api/policy/v1"
3333
"k8s.io/apimachinery/pkg/labels"
3434
"k8s.io/apimachinery/pkg/util/errors"
35+
"k8s.io/client-go/informers"
3536
"k8s.io/client-go/kubernetes"
3637
)
3738

3839
type staticPodOperatorControllerBuilder struct {
3940
// clients and related
4041
staticPodOperatorClient v1helpers.StaticPodOperatorClient
4142
kubeClient kubernetes.Interface
42-
kubeInformers v1helpers.KubeInformersForNamespaces
43+
kubeNamespaceInformers v1helpers.KubeInformersForNamespaces
44+
kubeClusterInformers informers.SharedInformerFactory
4345
configInformers externalversions.SharedInformerFactory
4446
clock clock.Clock
4547
eventRecorder events.Recorder
@@ -87,14 +89,16 @@ type staticPodOperatorControllerBuilder struct {
8789
func NewBuilder(
8890
staticPodOperatorClient v1helpers.StaticPodOperatorClient,
8991
kubeClient kubernetes.Interface,
90-
kubeInformers v1helpers.KubeInformersForNamespaces,
92+
kubeNamespaceInformers v1helpers.KubeInformersForNamespaces,
93+
clusterInformers informers.SharedInformerFactory,
9194
configInformers externalversions.SharedInformerFactory,
9295
clock clock.Clock,
9396
) Builder {
9497
return &staticPodOperatorControllerBuilder{
9598
staticPodOperatorClient: staticPodOperatorClient,
9699
kubeClient: kubeClient,
97-
kubeInformers: kubeInformers,
100+
kubeNamespaceInformers: kubeNamespaceInformers,
101+
kubeClusterInformers: clusterInformers,
98102
configInformers: configInformers,
99103
clock: clock,
100104
}
@@ -233,13 +237,13 @@ func (b *staticPodOperatorControllerBuilder) ToControllers() (manager.Controller
233237

234238
// ensure that all controllers that need the secret/configmap informer-based clients
235239
// need to wait for their synchronization before starting using WithInformer
236-
configMapClient := v1helpers.CachedConfigMapGetter(b.kubeClient.CoreV1(), b.kubeInformers)
237-
secretClient := v1helpers.CachedSecretGetter(b.kubeClient.CoreV1(), b.kubeInformers)
240+
configMapClient := v1helpers.CachedConfigMapGetter(b.kubeClient.CoreV1(), b.kubeNamespaceInformers)
241+
secretClient := v1helpers.CachedSecretGetter(b.kubeClient.CoreV1(), b.kubeNamespaceInformers)
238242
podClient := b.kubeClient.CoreV1()
239243
eventsClient := b.kubeClient.CoreV1()
240244
pdbClient := b.kubeClient.PolicyV1()
241-
operandInformers := b.kubeInformers.InformersFor(b.operandNamespace)
242-
clusterInformers := b.kubeInformers.InformersFor("")
245+
operandInformers := b.kubeNamespaceInformers.InformersFor(b.operandNamespace)
246+
clusterInformers := b.kubeClusterInformers
243247
infraInformers := b.configInformers.Config().V1().Infrastructures()
244248

245249
var errs []error
@@ -337,7 +341,7 @@ func (b *staticPodOperatorControllerBuilder) ToControllers() (manager.Controller
337341
b.operandNamespace,
338342
b.staticPodName,
339343
b.staticPodOperatorClient,
340-
b.kubeInformers,
344+
b.kubeNamespaceInformers,
341345
b.enableStartMonitor,
342346
eventRecorder,
343347
), 1)
@@ -347,7 +351,7 @@ func (b *staticPodOperatorControllerBuilder) ToControllers() (manager.Controller
347351
b.operandNamespace,
348352
b.operandPodLabelSelector,
349353
b.staticPodOperatorClient,
350-
b.kubeInformers,
354+
b.kubeNamespaceInformers,
351355
b.enableStartMonitor,
352356
b.eventRecorder,
353357
); err == nil {
@@ -376,7 +380,7 @@ func (b *staticPodOperatorControllerBuilder) ToControllers() (manager.Controller
376380
resourceapply.NewKubeClientHolder(b.kubeClient),
377381
b.staticPodOperatorClient,
378382
eventRecorder,
379-
).AddKubeInformers(b.kubeInformers), 1)
383+
).AddKubeInformers(b.kubeNamespaceInformers), 1)
380384

381385
manager.WithController(unsupportedconfigoverridescontroller.NewUnsupportedConfigOverridesController(b.operatorName, b.staticPodOperatorClient, eventRecorder), 1)
382386
manager.WithController(loglevel.NewClusterOperatorLoggingController(b.staticPodOperatorClient, eventRecorder), 1)
@@ -407,7 +411,7 @@ func (b *staticPodOperatorControllerBuilder) ToControllers() (manager.Controller
407411

408412
manager.WithController(missingstaticpodcontroller.New(
409413
b.staticPodOperatorClient,
410-
b.kubeInformers.InformersFor(b.operandNamespace),
414+
b.kubeNamespaceInformers.InformersFor(b.operandNamespace),
411415
b.eventRecorder,
412416
b.operandNamespace,
413417
b.staticPodName,

0 commit comments

Comments
 (0)