Content-Length: 520927 | pFad | http://github.com/kubernetes/kubernetes/commit/a84178bc76269fe0bd59e68435f6a568bed37fae

E0 kubectl: Fix in-cluster config not loaded on flags · kubernetes/kubernetes@a84178b · GitHub
Skip to content

Commit a84178b

Browse files
committed
kubectl: Fix in-cluster config not loaded on flags
In-cluster config is now being skipped when certain command line flags are specified, like --request-timeout. This is now fixed and in-cluster config is loaded even when such a flag is specified.
1 parent c5c87bd commit a84178b

File tree

2 files changed

+40
-25
lines changed

2 files changed

+40
-25
lines changed

staging/src/k8s.io/client-go/tools/clientcmd/merged_client_builder.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ type DeferredLoadingClientConfig struct {
3636
overrides *ConfigOverrides
3737
fallbackReader io.Reader
3838

39-
clientConfig ClientConfig
40-
loadingLock sync.Mutex
39+
clientConfig ClientConfig
40+
clientConfigNoOverrides ClientConfig
41+
loadingLock sync.Mutex
4142

4243
// provided for testing
4344
icc InClusterConfig
@@ -59,16 +60,16 @@ func NewInteractiveDeferredLoadingClientConfig(loader ClientConfigLoader, overri
5960
return &DeferredLoadingClientConfig{loader: loader, overrides: overrides, icc: &inClusterClientConfig{overrides: overrides}, fallbackReader: fallbackReader}
6061
}
6162

62-
func (config *DeferredLoadingClientConfig) createClientConfig() (ClientConfig, error) {
63+
func (config *DeferredLoadingClientConfig) createClientConfig() (ClientConfig, ClientConfig, error) {
6364
config.loadingLock.Lock()
6465
defer config.loadingLock.Unlock()
6566

66-
if config.clientConfig != nil {
67-
return config.clientConfig, nil
67+
if config.clientConfig != nil && config.clientConfigNoOverrides != nil {
68+
return config.clientConfig, config.clientConfigNoOverrides, nil
6869
}
6970
mergedConfig, err := config.loader.Load()
7071
if err != nil {
71-
return nil, err
72+
return nil, nil, err
7273
}
7374

7475
var currentContext string
@@ -80,11 +81,12 @@ func (config *DeferredLoadingClientConfig) createClientConfig() (ClientConfig, e
8081
} else {
8182
config.clientConfig = NewNonInteractiveClientConfig(*mergedConfig, currentContext, config.overrides, config.loader)
8283
}
83-
return config.clientConfig, nil
84+
config.clientConfigNoOverrides = NewNonInteractiveClientConfig(*mergedConfig, "", nil, config.loader)
85+
return config.clientConfig, config.clientConfigNoOverrides, nil
8486
}
8587

8688
func (config *DeferredLoadingClientConfig) RawConfig() (clientcmdapi.Config, error) {
87-
mergedConfig, err := config.createClientConfig()
89+
mergedConfig, _, err := config.createClientConfig()
8890
if err != nil {
8991
return clientcmdapi.Config{}, err
9092
}
@@ -94,7 +96,7 @@ func (config *DeferredLoadingClientConfig) RawConfig() (clientcmdapi.Config, err
9496

9597
// ClientConfig implements ClientConfig
9698
func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, error) {
97-
mergedClientConfig, err := config.createClientConfig()
99+
mergedClientConfig, mergedClientConfigNoOverrides, err := config.createClientConfig()
98100
if err != nil {
99101
return nil, err
100102
}
@@ -109,9 +111,12 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e
109111
return nil, err
110112
}
111113
case mergedConfig != nil:
112-
// the configuration is valid, but if this is equal to the defaults we should try
113-
// in-cluster configuration
114-
if !config.loader.IsDefaultConfig(mergedConfig) {
114+
mergedConfigNoOverrides, err := mergedClientConfigNoOverrides.ClientConfig()
115+
if err != nil {
116+
return mergedConfig, nil
117+
}
118+
119+
if mergedConfigNoOverrides != nil && !config.loader.IsDefaultConfig(mergedConfigNoOverrides) {
115120
return mergedConfig, nil
116121
}
117122
}
@@ -128,7 +133,7 @@ func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, e
128133

129134
// Namespace implements KubeConfig
130135
func (config *DeferredLoadingClientConfig) Namespace() (string, bool, error) {
131-
mergedKubeConfig, err := config.createClientConfig()
136+
mergedKubeConfig, _, err := config.createClientConfig()
132137
if err != nil {
133138
return "", false, err
134139
}

staging/src/k8s.io/client-go/tools/clientcmd/merged_client_builder_test.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@ limitations under the License.
1717
package clientcmd
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"testing"
2223

24+
"github.com/google/go-cmp/cmp"
25+
2326
restclient "k8s.io/client-go/rest"
2427
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
2528
)
@@ -195,17 +198,23 @@ func TestInClusterConfig(t *testing.T) {
195198
}
196199

197200
for name, test := range testCases {
198-
c := &DeferredLoadingClientConfig{icc: test.icc}
199-
c.loader = &ClientConfigLoadingRules{DefaultClientConfig: test.defaultConfig}
200-
c.clientConfig = test.clientConfig
201-
202-
cfg, err := c.ClientConfig()
203-
if test.icc.called != test.checkedICC {
204-
t.Errorf("%s: unexpected in-cluster-config call %t", name, test.icc.called)
205-
}
206-
if err != test.err || cfg != test.result {
207-
t.Errorf("%s: unexpected result: %v %#v", name, err, cfg)
208-
}
201+
t.Run(name, func(t *testing.T) {
202+
c := &DeferredLoadingClientConfig{icc: test.icc}
203+
c.loader = &ClientConfigLoadingRules{DefaultClientConfig: test.defaultConfig}
204+
c.clientConfig = test.clientConfig
205+
c.clientConfigNoOverrides = test.clientConfig
206+
207+
cfg, err := c.ClientConfig()
208+
if test.icc.called != test.checkedICC {
209+
t.Errorf("Unexpected in-cluster-config call %t", test.icc.called)
210+
}
211+
if !errors.Is(err, test.err) {
212+
t.Errorf("Unexpected error: %v", err)
213+
}
214+
if !cmp.Equal(cfg, test.result) {
215+
t.Errorf("Unexpected result:\n%s", cmp.Diff(test.result, cfg))
216+
}
217+
})
209218
}
210219
}
211220

@@ -328,12 +337,13 @@ func TestInClusterConfigNamespace(t *testing.T) {
328337
t.Run(name, func(t *testing.T) {
329338
c := &DeferredLoadingClientConfig{icc: test.icc, overrides: test.overrides}
330339
c.clientConfig = test.clientConfig
340+
c.clientConfigNoOverrides = test.clientConfig
331341

332342
ns, overridden, err := c.Namespace()
333343
if test.icc.called != test.checkedICC {
334344
t.Errorf("%s: unexpected in-cluster-config call %t", name, test.icc.called)
335345
}
336-
if err != test.err || ns != test.result || overridden != test.overridden {
346+
if !errors.Is(err, test.err) || ns != test.result || overridden != test.overridden {
337347
t.Errorf("%s: unexpected result: %v %s %t", name, err, ns, overridden)
338348
}
339349
})

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/kubernetes/kubernetes/commit/a84178bc76269fe0bd59e68435f6a568bed37fae

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy