From a96bd93c0fb566a8224367f303ddab617a69fdab Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Sat, 10 Sep 2016 09:33:39 +0200 Subject: [PATCH 1/3] Check if default config is invalid before comparing it Changes made in #31947 cause kube-proxy to ignore `--kubeconfig` and `--master` flags and use in-cluster configuration, which is unusable due to the fact that VIP hasn't been created yet. --- pkg/client/unversioned/clientcmd/merged_client_builder.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/client/unversioned/clientcmd/merged_client_builder.go b/pkg/client/unversioned/clientcmd/merged_client_builder.go index 8ab93cdd944..899e656ea80 100644 --- a/pkg/client/unversioned/clientcmd/merged_client_builder.go +++ b/pkg/client/unversioned/clientcmd/merged_client_builder.go @@ -113,6 +113,9 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e // TODO: this shouldn't be a global - the client config rules should be // handling this. defaultConfig, err := DefaultClientConfig.ClientConfig() + if IsConfigurationInvalid(err) { + return mergedConfig, nil + } if err == nil && !reflect.DeepEqual(mergedConfig, defaultConfig) { return mergedConfig, nil } From 0433fe0d7293b8757377a703174662cabc420061 Mon Sep 17 00:00:00 2001 From: "Madhusudan.C.S" Date: Tue, 13 Sep 2016 15:33:47 -0700 Subject: [PATCH 2/3] Do not return original config, i.e. mergeConfig, when it is empty and default config is invalid. --- pkg/client/unversioned/clientcmd/merged_client_builder.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/client/unversioned/clientcmd/merged_client_builder.go b/pkg/client/unversioned/clientcmd/merged_client_builder.go index 899e656ea80..d9321cd5c0d 100644 --- a/pkg/client/unversioned/clientcmd/merged_client_builder.go +++ b/pkg/client/unversioned/clientcmd/merged_client_builder.go @@ -112,11 +112,11 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e // "empty due to defaults" // TODO: this shouldn't be a global - the client config rules should be // handling this. - defaultConfig, err := DefaultClientConfig.ClientConfig() - if IsConfigurationInvalid(err) { + defaultConfig, defErr := DefaultClientConfig.ClientConfig() + if IsConfigurationInvalid(defErr) && !IsEmptyConfig(err) { return mergedConfig, nil } - if err == nil && !reflect.DeepEqual(mergedConfig, defaultConfig) { + if defErr == nil && !reflect.DeepEqual(mergedConfig, defaultConfig) { return mergedConfig, nil } } From c4acaa6717b8ef00ffcfbe33bbf88f355f010982 Mon Sep 17 00:00:00 2001 From: "Madhusudan.C.S" Date: Tue, 13 Sep 2016 15:34:56 -0700 Subject: [PATCH 3/3] Add a test to verify that the client config is returned when default config is invalid. --- .../clientcmd/merged_client_builder_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/client/unversioned/clientcmd/merged_client_builder_test.go b/pkg/client/unversioned/clientcmd/merged_client_builder_test.go index 2bb7c465f9d..aa9ee6b534f 100644 --- a/pkg/client/unversioned/clientcmd/merged_client_builder_test.go +++ b/pkg/client/unversioned/clientcmd/merged_client_builder_test.go @@ -172,6 +172,16 @@ func TestInClusterConfig(t *testing.T) { result: config2, err: nil, }, + + "in-cluster not checked when default is invalid": { + defaultConfig: &DefaultClientConfig, + clientConfig: &testClientConfig{config: config2}, + icc: &testICC{}, + + checkedICC: false, + result: config2, + err: nil, + }, } for name, test := range testCases {