@@ -20,7 +20,9 @@ import (
2020 "github.com/prometheus/client_golang/prometheus"
2121 corev1 "k8s.io/api/core/v1"
2222 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
23+ "k8s.io/apimachinery/pkg/labels"
2324 "k8s.io/apimachinery/pkg/runtime"
25+ "k8s.io/apimachinery/pkg/selection"
2426 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2527 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2628 "sigs.k8s.io/controller-runtime/pkg/client"
@@ -458,6 +460,35 @@ func main() {
458460 }
459461 ctx := ctrl .SetupSignalHandler ()
460462
463+ var requirements []labels.Requirement
464+ for _ , k := range []string {helpers .ManagedByLabel , helpers .AppNameLabel } {
465+ val , ok := helpers .OwnerLabels [k ]
466+ if ! ok || val == "" {
467+ setupLog .Error (errors .New ("invalid option" ),
468+ fmt .Sprintf ("Expected Owner label %q is not present, this is a bug" , k ))
469+ os .Exit (1 )
470+ }
471+
472+ if r , err := labels .NewRequirement (
473+ k , selection .Equals , []string {
474+ val ,
475+ }); err != nil {
476+ setupLog .Error (err , "Failed to create label requirement" )
477+ os .Exit (1 )
478+ } else {
479+ requirements = append (requirements , * r )
480+ }
481+ }
482+
483+ // secretsClient is used to interact with secrets that match the selector. This
484+ // client is useful to avoid caching all secrets in a cluster. The client will
485+ // cache only secrets that match the selector.
486+ secretsClient , err := helpers .NewSecretsClientForManager (ctx , mgr , labels .NewSelector ().Add (requirements ... ))
487+ if err != nil {
488+ setupLog .Error (err , "Failed to create a Secrets client" )
489+ os .Exit (1 )
490+ }
491+
461492 var clientFactory vclient.CachingClientFactory
462493 {
463494 switch clientCachePersistenceModel {
@@ -490,6 +521,7 @@ func main() {
490521 Scheme : mgr .GetScheme (),
491522 Recorder : mgr .GetEventRecorderFor ("VaultStaticSecret" ),
492523 SecretDataBuilder : secretDataBuilder ,
524+ SecretsClient : secretsClient ,
493525 HMACValidator : hmacValidator ,
494526 ClientFactory : clientFactory ,
495527 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
@@ -502,6 +534,7 @@ func main() {
502534 Client : mgr .GetClient (),
503535 Scheme : mgr .GetScheme (),
504536 ClientFactory : clientFactory ,
537+ SecretsClient : secretsClient ,
505538 HMACValidator : hmacValidator ,
506539 SyncRegistry : controllers .NewSyncRegistry (),
507540 Recorder : mgr .GetEventRecorderFor ("VaultPKISecret" ),
@@ -547,6 +580,7 @@ func main() {
547580 Scheme : mgr .GetScheme (),
548581 Recorder : mgr .GetEventRecorderFor ("VaultDynamicSecret" ),
549582 ClientFactory : clientFactory ,
583+ SecretsClient : secretsClient ,
550584 HMACValidator : hmacValidator ,
551585 SyncRegistry : controllers .NewSyncRegistry (),
552586 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
@@ -574,6 +608,7 @@ func main() {
574608 Scheme : mgr .GetScheme (),
575609 Recorder : mgr .GetEventRecorderFor ("HCPVaultSecretsApp" ),
576610 SecretDataBuilder : secretDataBuilder ,
611+ SecretsClient : secretsClient ,
577612 HMACValidator : hmacValidator ,
578613 MinRefreshAfter : minRefreshAfterHVSA ,
579614 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
0 commit comments