package utils import ( "errors" "flag" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "log" "os" "path/filepath" ) /** @author: sre @date: 2022/8/10 0010 @desc: GetConfig from kubeConfigPath **/ // GetConfig from kubeConfigPath func GetConfig(kubeConfigPath ...string) (*rest.Config, error) { var kubeConfig *string if len(kubeConfigPath) > 0 { kubeConfig = &kubeConfigPath[0] } else if home := homeDir(); home != "" { kubeConfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") } else { log.Println("can not find kubeconfig") return nil, errors.New("can not find kubeconfig") } // 加载配置文件,生成 config 对象 config, err := clientcmd.BuildConfigFromFlags("", *kubeConfig) if err != nil { log.Println("加载配置文件失败: ", err.Error()) return nil, err } return config, nil } // homeDir get current user home func homeDir() string { if h := os.Getenv("HOME"); h != "" { return h } return os.Getenv("USERPROFILE") // windows }