配置统一,集群外或集群内使用client-go
使得当在集群内内部运行时,使用ServiceAccount,在集群外部时使用~/.kube/config中的配置,则可以采用如下的方式:
var config *rest.Config
var kubeConfig *string
if home := homeDir(); home != "" {
kubeConfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeConfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()
// 使用 ServiceAccount 创建集群配置(InCluster模式)
if config, err = rest.InClusterConfig(); err != nil {
// 使用 KubeConfig 文件创建集群配置
if config, err = clientcmd.BuildConfigFromFlags("", *kubeConfig); err != nil {
return err
}
}