@@ -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"
@@ -435,6 +437,35 @@ func main() {
435437 }
436438 ctx := ctrl .SetupSignalHandler ()
437439
440+ var requirements []labels.Requirement
441+ for _ , k := range []string {helpers .ManagedByLabel , helpers .AppNameLabel } {
442+ val , ok := helpers .OwnerLabels [k ]
443+ if ! ok || val == "" {
444+ setupLog .Error (errors .New ("invalid option" ),
445+ fmt .Sprintf ("Expected Owner label %q is not present, this is a bug" , k ))
446+ os .Exit (1 )
447+ }
448+
449+ if r , err := labels .NewRequirement (
450+ k , selection .Equals , []string {
451+ val ,
452+ }); err != nil {
453+ setupLog .Error (err , "Failed to create label requirement" )
454+ os .Exit (1 )
455+ } else {
456+ requirements = append (requirements , * r )
457+ }
458+ }
459+
460+ // secretsClient is used to interact with secrets that match the selector. This
461+ // client is useful to avoid caching all secrets in a cluster. The client will
462+ // cache only secrets that match the selector.
463+ secretsClient , err := helpers .NewSecretsClientForManager (ctx , mgr , labels .NewSelector ().Add (requirements ... ))
464+ if err != nil {
465+ setupLog .Error (err , "Failed to create a Secrets client" )
466+ os .Exit (1 )
467+ }
468+
438469 var clientFactory vclient.CachingClientFactory
439470 {
440471 switch clientCachePersistenceModel {
@@ -467,6 +498,7 @@ func main() {
467498 Scheme : mgr .GetScheme (),
468499 Recorder : mgr .GetEventRecorderFor ("VaultStaticSecret" ),
469500 SecretDataBuilder : secretDataBuilder ,
501+ SecretsClient : secretsClient ,
470502 HMACValidator : hmacValidator ,
471503 ClientFactory : clientFactory ,
472504 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
@@ -479,6 +511,7 @@ func main() {
479511 Client : mgr .GetClient (),
480512 Scheme : mgr .GetScheme (),
481513 ClientFactory : clientFactory ,
514+ SecretsClient : secretsClient ,
482515 HMACValidator : hmacValidator ,
483516 SyncRegistry : controllers .NewSyncRegistry (),
484517 Recorder : mgr .GetEventRecorderFor ("VaultPKISecret" ),
@@ -524,6 +557,7 @@ func main() {
524557 Scheme : mgr .GetScheme (),
525558 Recorder : mgr .GetEventRecorderFor ("VaultDynamicSecret" ),
526559 ClientFactory : clientFactory ,
560+ SecretsClient : secretsClient ,
527561 HMACValidator : hmacValidator ,
528562 SyncRegistry : controllers .NewSyncRegistry (),
529563 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
@@ -551,6 +585,7 @@ func main() {
551585 Scheme : mgr .GetScheme (),
552586 Recorder : mgr .GetEventRecorderFor ("HCPVaultSecretsApp" ),
553587 SecretDataBuilder : secretDataBuilder ,
588+ SecretsClient : secretsClient ,
554589 HMACValidator : hmacValidator ,
555590 MinRefreshAfter : minRefreshAfterHVSA ,
556591 BackOffRegistry : controllers .NewBackOffRegistry (backoffOpts ... ),
0 commit comments