github.com/grafana/tanka@v0.26.1-0.20240506093700-c22cfc35c21a/pkg/kubernetes/client/exec.go (about) 1 package client 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 ) 8 9 // kubectlCmd returns command a object that will launch kubectl at an appropriate path. 10 func kubectlCmd(args ...string) *exec.Cmd { 11 binary := "kubectl" 12 if env := os.Getenv("TANKA_KUBECTL_PATH"); env != "" { 13 binary = env 14 } 15 16 return exec.Command(binary, args...) 17 } 18 19 // ctl returns an `exec.Cmd` for `kubectl`. It also forces the correct context 20 // and injects our patched $KUBECONFIG for the default namespace. 21 func (k Kubectl) ctl(action string, args ...string) *exec.Cmd { 22 // prepare the arguments 23 argv := []string{action, 24 "--context", k.info.Kubeconfig.Context.Name, 25 } 26 argv = append(argv, args...) 27 28 // prepare the cmd 29 cmd := kubectlCmd(argv...) 30 31 if os.Getenv("TANKA_KUBECTL_TRACE") != "" { 32 fmt.Println(cmd.String()) 33 } 34 35 return cmd 36 }