diff --git a/staging/src/k8s.io/controller-manager/pkg/clientbuilder/client_builder_dynamic.go b/staging/src/k8s.io/controller-manager/pkg/clientbuilder/client_builder_dynamic.go index 00f925cc7b8..c8ceaefecea 100644 --- a/staging/src/k8s.io/controller-manager/pkg/clientbuilder/client_builder_dynamic.go +++ b/staging/src/k8s.io/controller-manager/pkg/clientbuilder/client_builder_dynamic.go @@ -116,7 +116,7 @@ func (t *DynamicControllerClientBuilder) Config(saName string) (*restclient.Conf rt, ok := t.roundTripperFuncMap[saName] if ok { - configCopy.WrapTransport = rt + configCopy.Wrap(rt) } else { cachedTokenSource := transport.NewCachedTokenSource(&tokenSourceImpl{ namespace: t.Namespace, @@ -125,7 +125,7 @@ func (t *DynamicControllerClientBuilder) Config(saName string) (*restclient.Conf expirationSeconds: t.expirationSeconds, leewayPercent: t.leewayPercent, }) - configCopy.WrapTransport = transport.ResettableTokenSourceWrapTransport(cachedTokenSource) + configCopy.Wrap(transport.ResettableTokenSourceWrapTransport(cachedTokenSource)) t.roundTripperFuncMap[saName] = configCopy.WrapTransport } @@ -235,7 +235,11 @@ func (ts *tokenSourceImpl) Token() (*oauth2.Token, error) { func constructClient(saNamespace, saName string, config *restclient.Config) restclient.Config { username := apiserverserviceaccount.MakeUsername(saNamespace, saName) - ret := *restclient.AnonymousClientConfig(config) + // make a shallow copy + // the caller already castrated the config during creation + // this allows for potential extensions in the future + // for example it preserve HTTP wrappers for custom behavior per request + ret := *config restclient.AddUserAgent(&ret, username) return ret }