Merge pull request #10102 from mikedanese/kubeconfig-bug-fix

make clientcmd use inClusterConfig only if no other configs are available
This commit is contained in:
Satnam Singh 2015-06-19 16:45:33 -07:00
commit 29ffee51a8
2 changed files with 14 additions and 6 deletions

View File

@ -37,6 +37,8 @@ var (
// EnvVarCluster allows overriding the DefaultCluster using an envvar for the server name
EnvVarCluster = clientcmdapi.Cluster{Server: os.Getenv("KUBERNETES_MASTER")}
DefaultClientConfig = DirectClientConfig{*clientcmdapi.NewConfig(), "", &ConfigOverrides{}, nil}
)
// ClientConfig is used to make it easy to get an api server client

View File

@ -18,6 +18,7 @@ package clientcmd
import (
"io"
"reflect"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
clientcmdapi "github.com/GoogleCloudPlatform/kubernetes/pkg/client/clientcmd/api"
@ -45,11 +46,6 @@ func NewInteractiveDeferredLoadingClientConfig(loadingRules *ClientConfigLoading
}
func (config DeferredLoadingClientConfig) createClientConfig() (ClientConfig, error) {
// Are we running in a cluster? If so, use that.
icc := inClusterClientConfig{}
if icc.Possible() {
return icc, nil
}
mergedConfig, err := config.loadingRules.Load()
if err != nil {
return nil, err
@ -80,8 +76,18 @@ func (config DeferredLoadingClientConfig) ClientConfig() (*client.Config, error)
if err != nil {
return nil, err
}
mergedConfig, err := mergedClientConfig.ClientConfig()
if err != nil {
return nil, err
}
// Are we running in a cluster and were no other configs found? If so, use the in-cluster-config.
icc := inClusterClientConfig{}
defaultConfig, err := DefaultClientConfig.ClientConfig()
if icc.Possible() && err == nil && reflect.DeepEqual(mergedConfig, defaultConfig) {
return icc.ClientConfig()
}
return mergedClientConfig.ClientConfig()
return mergedConfig, nil
}
// Namespace implements KubeConfig