Merge pull request #28539 from derekwaynecarr/credential_provider_timeout

Automatic merge from submit-queue

Fix httpclient setup for gcp credential provider to have timeout

The default http client has no timeout.

This could cause problems when not on GCP environments.

This PR changes to use a 10s timeout, and ensures the transport has our normal defaults applied.

/cc @ncdc @liggitt
This commit is contained in:
k8s-merge-robot 2016-07-22 18:01:41 -07:00 committed by GitHub
commit 75689dd4d2

View File

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