From 793dd11c85dfe29ec6f6c89d2efecb6f002e5db5 Mon Sep 17 00:00:00 2001 From: Daishan Peng Date: Fri, 14 Jun 2019 15:13:10 -0700 Subject: [PATCH] fix kubectl KUBECONFIG path --- cli/pkg/clicontext/kubectl.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/cli/pkg/clicontext/kubectl.go b/cli/pkg/clicontext/kubectl.go index 07c2c13a4..87385ee46 100644 --- a/cli/pkg/clicontext/kubectl.go +++ b/cli/pkg/clicontext/kubectl.go @@ -2,13 +2,16 @@ package clicontext import ( "fmt" + "io/ioutil" "os" "os/exec" + "github.com/rancher/wrangler/pkg/kubeconfig" "github.com/sirupsen/logrus" + "k8s.io/client-go/tools/clientcmd" ) -func (c *Config) KubectlCmd(namespace, command string, args ...string) (*exec.Cmd, error) { +func (c *Config) Kubectl(namespace, command string, args ...string) error { var execArgs []string if logrus.GetLevel() >= logrus.DebugLevel { execArgs = append(execArgs, "--v=9") @@ -21,19 +24,30 @@ func (c *Config) KubectlCmd(namespace, command string, args ...string) (*exec.Cm } execArgs = append(execArgs, args...) + if c.Kubeconfig == "" { + loader := kubeconfig.GetInteractiveClientConfig(c.Kubeconfig) + rawconfig, err := loader.RawConfig() + if err != nil { + return err + } + fp, err := ioutil.TempFile("", "kubeconfig-") + if err != nil { + return err + } + if err := fp.Close(); err != nil { + return err + } + defer os.Remove(fp.Name()) + if err := clientcmd.WriteToFile(rawconfig, fp.Name()); err != nil { + return err + } + c.Kubeconfig = fp.Name() + } logrus.Debugf("kubectl %v, KUBECONFIG=%s", execArgs, c.Kubeconfig) cmd := exec.Command("kubectl", execArgs...) cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", c.Kubeconfig)) cmd.Stderr = os.Stderr cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout - return cmd, nil -} - -func (c *Config) Kubectl(namespace, command string, args ...string) error { - cmd, err := c.KubectlCmd(namespace, command, args...) - if err != nil { - return err - } return cmd.Run() }