Skip to content

Commit

Permalink
fix kubeconfig client merging logic
Browse files Browse the repository at this point in the history
This change aligns the istioctl client config merging logic with
kubectl. kubectl uses an older version of github.com/imdario/mergo
where the Merge() function overwrites existing values. istioctl uses a
newer version which doesn't (see linked issues below). This manifests
in the k8s client loading code with multiple config sources not being
merged properly.

Longer term fix would be to update kubectl and k8s.io/client-go to use
the latest version of github.com/imdario/mergo.

Fixes istio#4938

Related upstream kubernetes issues:
- darccio/mergo#33 (comment)
- kubernetes/kubernetes#27543
- kubernetes/kubernetes#23789
  • Loading branch information
ayj committed Jul 10, 2018
1 parent 9cacdb3 commit cf6e4da
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 195 deletions.
5 changes: 2 additions & 3 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -361,3 +361,7 @@ ignored = [
[[constraint]]
name = "github.com/gogo/status"
revision = "d60b5acac426cb52f7e28124c6aaa862d9f339f5"

[[override]]
name = "github.com/imdario/mergo"
revision = "6633656539c1639d9d78127b7d47c622b5d7b6dc"
6 changes: 5 additions & 1 deletion pkg/kube/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ func BuildClientConfig(kubeconfig, context string) (*rest.Config, error) {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
loadingRules.ExplicitPath = kubeconfig
configOverrides := &clientcmd.ConfigOverrides{CurrentContext: context}
configOverrides := &clientcmd.ConfigOverrides{
ClusterDefaults: clientcmd.ClusterDefaults,
CurrentContext: context,
}

return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides).ClientConfig()
}

Expand Down
54 changes: 13 additions & 41 deletions vendor/github.com/imdario/mergo/map.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

170 changes: 25 additions & 145 deletions vendor/github.com/imdario/mergo/merge.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit cf6e4da

Please sign in to comment.