diff --git a/cmd/tk/check.go b/cmd/tk/check.go index 06b1c9d8..4ebb03ab 100644 --- a/cmd/tk/check.go +++ b/cmd/tk/check.go @@ -4,12 +4,8 @@ import ( "fmt" "os" "os/exec" - "path/filepath" "github.com/spf13/cobra" - "k8s.io/client-go/kubernetes" - _ "k8s.io/client-go/plugin/pkg/client/auth" - "k8s.io/client-go/tools/clientcmd" ) var checkCmd = &cobra.Command{ @@ -17,24 +13,16 @@ var checkCmd = &cobra.Command{ Short: "Check for potential problems", Long: ` The check command will perform a series of checks to validate that -the local environment and Kubernetes cluster are configured correctly.`, +the local environment is configured correctly.`, Example: ` check --pre`, RunE: runCheckCmd, } var ( - kubeconfig string - checkPre bool + checkPre bool ) func init() { - if home := homeDir(); home != "" { - checkCmd.Flags().StringVarP(&kubeconfig, "kubeconfig", "", filepath.Join(home, ".kube", "config"), - "path to the kubeconfig file") - } else { - checkCmd.Flags().StringVarP(&kubeconfig, "kubeconfig", "", "", - "absolute path to the kubeconfig file") - } checkCmd.Flags().BoolVarP(&checkPre, "pre", "", false, "only run pre-installation checks") @@ -58,13 +46,6 @@ func runCheckCmd(cmd *cobra.Command, args []string) error { return nil } -func homeDir() string { - if h := os.Getenv("HOME"); h != "" { - return h - } - return os.Getenv("USERPROFILE") // windows -} - func checkLocal() bool { ok := true for _, cmd := range []string{"kubectl", "kustomize"} { @@ -80,13 +61,7 @@ func checkLocal() bool { } func checkRemote() bool { - config, err := clientcmd.BuildConfigFromFlags("", kubeconfig) - if err != nil { - fmt.Println(`✗`, "kubernetes client initialization failed", err.Error()) - return false - } - - client, err := kubernetes.NewForConfig(config) + client, err := NewKubernetesClient() if err != nil { fmt.Println(`✗`, "kubernetes client initialization failed", err.Error()) return false diff --git a/cmd/tk/main.go b/cmd/tk/main.go index f4b7dd35..e8542631 100644 --- a/cmd/tk/main.go +++ b/cmd/tk/main.go @@ -4,9 +4,13 @@ import ( "fmt" "log" "os" + "path/filepath" "strings" "github.com/spf13/cobra" + "k8s.io/client-go/kubernetes" + _ "k8s.io/client-go/plugin/pkg/client/auth" + "k8s.io/client-go/tools/clientcmd" ) var VERSION = "0.0.1" @@ -17,6 +21,20 @@ var rootCmd = &cobra.Command{ Version: VERSION, } +var ( + kubeconfig string +) + +func init() { + if home := homeDir(); home != "" { + rootCmd.PersistentFlags().StringVarP(&kubeconfig, "kubeconfig", "", filepath.Join(home, ".kube", "config"), + "path to the kubeconfig file") + } else { + checkCmd.PersistentFlags().StringVarP(&kubeconfig, "kubeconfig", "", "", + "absolute path to the kubeconfig file") + } +} + func main() { log.SetFlags(0) @@ -27,3 +45,24 @@ func main() { os.Exit(1) } } + +func homeDir() string { + if h := os.Getenv("HOME"); h != "" { + return h + } + return os.Getenv("USERPROFILE") // windows +} + +func NewKubernetesClient() (*kubernetes.Clientset, error) { + config, err := clientcmd.BuildConfigFromFlags("", kubeconfig) + if err != nil { + return nil, err + } + + client, err := kubernetes.NewForConfig(config) + if err != nil { + return nil, err + } + + return client, nil +}