From df07358f478f139369bf0a2d680eb16a44d6cc9e Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Thu, 16 Apr 2020 12:35:37 +0200 Subject: [PATCH] getKubeconfig: fix: update context with new authInfo and cluster names --- pkg/cluster/kubeconfig.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/cluster/kubeconfig.go b/pkg/cluster/kubeconfig.go index 9257e50e..199b1dfd 100644 --- a/pkg/cluster/kubeconfig.go +++ b/pkg/cluster/kubeconfig.go @@ -83,7 +83,7 @@ func GetKubeconfig(runtime runtimes.Runtime, cluster *k3d.Cluster) ([]byte, erro return nil, err } - // drop the first 512 bytes which contain file metadata + // drop the first 512 bytes which contain file metadata/control characters // and trim any NULL characters trimBytes := bytes.Trim(readBytes[512:], "\x00") @@ -99,16 +99,27 @@ func GetKubeconfig(runtime runtimes.Runtime, cluster *k3d.Cluster) ([]byte, erro kc.Clusters["default"].Server = fmt.Sprintf("https://%s:%s", APIHost, APIPort) // rename user from default to admin - kc.AuthInfos[fmt.Sprintf("admin@%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name)] = kc.AuthInfos["default"] + newAuthInfoName := fmt.Sprintf("admin@%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name) + kc.AuthInfos[newAuthInfoName] = kc.AuthInfos["default"] delete(kc.AuthInfos, "default") // rename cluster from default to clustername - kc.Clusters[fmt.Sprintf("%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name)] = kc.Clusters["default"] + newClusterName := fmt.Sprintf("%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name) + kc.Clusters[newClusterName] = kc.Clusters["default"] delete(kc.Clusters, "default") // rename context from default to admin@clustername - kc.Contexts[fmt.Sprintf("admin@%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name)] = kc.Contexts["default"] + newContextName := fmt.Sprintf("admin@%s-%s", k3d.DefaultObjectNamePrefix, cluster.Name) + kc.Contexts[newContextName] = kc.Contexts["default"] delete(kc.Contexts, "default") + + // update context with new values for cluster and user + kc.Contexts[newContextName].AuthInfo = newAuthInfoName + kc.Contexts[newContextName].Cluster = newClusterName + + // set current-context to new context name + kc.CurrentContext = newContextName + log.Debugf("Modified Kubeconfig: %+v", kc) trimBytes, err = kubeconfig.Write(*kc)