Skip to content

Commit 3ea93b2

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request kubernetes#47822 from liggitt/secret-storage-config
Automatic merge from submit-queue Separate serviceaccount and secret storage config Fixes kubernetes#47815, and is required in order to enable the secret encryption feature with a recommended configuration This passes distinct storage options for serviceaccounts and secrets, since secrets can now have an encrypting transformer associated with them
2 parents a3501fb + 3de8e52 commit 3ea93b2

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

cmd/kube-apiserver/app/server.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -497,11 +497,20 @@ func BuildAuthenticator(s *options.ServerRunOptions, storageFactory serverstorag
497497
if s.Authentication.ServiceAccounts.Lookup {
498498
// we have to go direct to storage because the clientsets fail when they're initialized with some API versions excluded
499499
// we should stop trying to control them like that.
500-
storageConfig, err := storageFactory.NewConfig(api.Resource("serviceaccounts"))
500+
storageConfigServiceAccounts, err := storageFactory.NewConfig(api.Resource("serviceaccounts"))
501501
if err != nil {
502502
return nil, nil, fmt.Errorf("unable to get serviceaccounts storage: %v", err)
503503
}
504-
authenticatorConfig.ServiceAccountTokenGetter = serviceaccountcontroller.NewGetterFromStorageInterface(storageConfig, storageFactory.ResourcePrefix(api.Resource("serviceaccounts")), storageFactory.ResourcePrefix(api.Resource("secrets")))
504+
storageConfigSecrets, err := storageFactory.NewConfig(api.Resource("secrets"))
505+
if err != nil {
506+
return nil, nil, fmt.Errorf("unable to get secrets storage: %v", err)
507+
}
508+
authenticatorConfig.ServiceAccountTokenGetter = serviceaccountcontroller.NewGetterFromStorageInterface(
509+
storageConfigServiceAccounts,
510+
storageFactory.ResourcePrefix(api.Resource("serviceaccounts")),
511+
storageConfigSecrets,
512+
storageFactory.ResourcePrefix(api.Resource("secrets")),
513+
)
505514
}
506515
if client == nil || reflect.ValueOf(client).IsNil() {
507516
// TODO: Remove check once client can never be nil.

pkg/controller/serviceaccount/tokengetter.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,14 @@ func (r *registryGetter) GetSecret(namespace, name string) (*v1.Secret, error) {
8585

8686
// NewGetterFromStorageInterface returns a ServiceAccountTokenGetter that
8787
// uses the specified storage to retrieve service accounts and secrets.
88-
func NewGetterFromStorageInterface(config *storagebackend.Config, saPrefix, secretPrefix string) serviceaccount.ServiceAccountTokenGetter {
89-
saOpts := generic.RESTOptions{StorageConfig: config, Decorator: generic.UndecoratedStorage, ResourcePrefix: saPrefix}
90-
secretOpts := generic.RESTOptions{StorageConfig: config, Decorator: generic.UndecoratedStorage, ResourcePrefix: secretPrefix}
88+
func NewGetterFromStorageInterface(
89+
saConfig *storagebackend.Config,
90+
saPrefix string,
91+
secretConfig *storagebackend.Config,
92+
secretPrefix string) serviceaccount.ServiceAccountTokenGetter {
93+
94+
saOpts := generic.RESTOptions{StorageConfig: saConfig, Decorator: generic.UndecoratedStorage, ResourcePrefix: saPrefix}
95+
secretOpts := generic.RESTOptions{StorageConfig: secretConfig, Decorator: generic.UndecoratedStorage, ResourcePrefix: secretPrefix}
9196
return NewGetterFromRegistries(
9297
serviceaccountregistry.NewRegistry(serviceaccountstore.NewREST(saOpts)),
9398
secret.NewRegistry(secretstore.NewREST(secretOpts)),

0 commit comments

Comments
 (0)