Fix httpclient setup for gcp credential provider to have timeout

This commit is contained in:
derekwaynecarr 2016-07-06 13:33:10 -04:00
parent c0579af684
commit 5366bfe08d

View File

@ -24,6 +24,7 @@ import (
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/pkg/credentialprovider" "k8s.io/kubernetes/pkg/credentialprovider"
utilnet "k8s.io/kubernetes/pkg/util/net"
) )
const ( const (
@ -74,10 +75,16 @@ type containerRegistryProvider struct {
// init registers the various means by which credentials may // init registers the various means by which credentials may
// be resolved on GCP. // be resolved on GCP.
func init() { func init() {
tr := utilnet.SetTransportDefaults(&http.Transport{})
metadataHTTPClientTimeout := time.Second * 10
httpClient := &http.Client{
Transport: tr,
Timeout: metadataHTTPClientTimeout,
}
credentialprovider.RegisterCredentialProvider("google-dockercfg", credentialprovider.RegisterCredentialProvider("google-dockercfg",
&credentialprovider.CachingDockerConfigProvider{ &credentialprovider.CachingDockerConfigProvider{
Provider: &dockerConfigKeyProvider{ Provider: &dockerConfigKeyProvider{
metadataProvider{Client: http.DefaultClient}, metadataProvider{Client: httpClient},
}, },
Lifetime: 60 * time.Second, Lifetime: 60 * time.Second,
}) })
@ -85,7 +92,7 @@ func init() {
credentialprovider.RegisterCredentialProvider("google-dockercfg-url", credentialprovider.RegisterCredentialProvider("google-dockercfg-url",
&credentialprovider.CachingDockerConfigProvider{ &credentialprovider.CachingDockerConfigProvider{
Provider: &dockerConfigUrlKeyProvider{ Provider: &dockerConfigUrlKeyProvider{
metadataProvider{Client: http.DefaultClient}, metadataProvider{Client: httpClient},
}, },
Lifetime: 60 * time.Second, Lifetime: 60 * time.Second,
}) })
@ -94,7 +101,7 @@ func init() {
// Never cache this. The access token is already // Never cache this. The access token is already
// cached by the metadata service. // cached by the metadata service.
&containerRegistryProvider{ &containerRegistryProvider{
metadataProvider{Client: http.DefaultClient}, metadataProvider{Client: httpClient},
}) })
} }