我找到了一个解决方案,使用NewDefaultClientConfigLoadingRules
然后加载规则。如果您的配置可以使用默认客户端配置加载规则加载,则此方法有效。
Example:
package main
import (
"github.com/davecgh/go-spew/spew"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
clientCfg, err := clientcmd.NewDefaultClientConfigLoadingRules().Load()
spew.Dump(clientCfg, err)
}
给你一个https://godoc.org/k8s.io/client-go/tools/clientcmd/api#Config https://godoc.org/k8s.io/client-go/tools/clientcmd/api#Config其中包含当前上下文,包括其名称空间。
Contexts: (map[string]*api.Context) (len=1) {
(string) (len=17) "xxx.xxxxx.xxx": (*api.Context)(0xc0001b2b40)({
LocationOfOrigin: (string) (len=30) "/path/to/.kube/config",
Cluster: (string) (len=17) "xxx.xxxxx.xxx",
AuthInfo: (string) (len=29) "[email protected] /cdn-cgi/l/email-protection",
Namespace: (string) (len=7) "default",
Extensions: (map[string]runtime.Object) {
}
})
},
CurrentContext: (string) (len=17) "xxx.xxxxx.xxx",
供你参考,ClientConfigLoadingRules
是一个具有不同属性的结构,用于告诉客户端从哪里加载配置。默认情况下将使用您的路径KUBECONFIG
环境变量中的Precedence
field.
(*clientcmd.ClientConfigLoadingRules)(0xc0000a31d0)({
ExplicitPath: (string) "",
Precedence: ([]string) (len=1 cap=1) {
(string) (len=30) "/path/to/.kube/config"
},
MigrationRules: (map[string]string) (len=1) {
(string) (len=30) "/path/to/.kube/config": (string) (len=35) "/path/to/.kube/.kubeconfig"
},
DoNotResolvePaths: (bool) false,
DefaultClientConfig: (clientcmd.ClientConfig) <nil>
})