如何使用 client-go 获取当前的 k8s 上下文名称
How to get current k8s context name using client-go
我正在尝试使用 client-go
获取/打印我在 ~/.kube/config
中配置的当前 kubernetes
上下文的名称
我已成功验证并获得 *rest.Config
对象
config, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
&clientcmd.ConfigOverrides{
CurrentContext: "",
}).ClientConfig()
但我在 config
结构中没有看到任何相关字段。
请注意,尽管我在 ConfigOverrides
中传递了一个空字符串 (""
),但返回的 config
对象为我提供了一个 kubernetes.Clientset
,它基于我当前的 kubectl
上下文。
函数 ClientConfig()
returns Kubernetes API 客户端配置,因此它没有关于您的配置文件的信息。
要获取当前上下文,需要调用RawConfig()
,然后有一个字段叫CurrentContext
。
下面的代码应该可以工作。
config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
&clientcmd.ConfigOverrides{
CurrentContext: "",
}).RawConfig()
currentContext := config.CurrentContext
我正在尝试使用 client-go
~/.kube/config
中配置的当前 kubernetes
上下文的名称
我已成功验证并获得 *rest.Config
对象
config, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
&clientcmd.ConfigOverrides{
CurrentContext: "",
}).ClientConfig()
但我在 config
结构中没有看到任何相关字段。
请注意,尽管我在 ConfigOverrides
中传递了一个空字符串 (""
),但返回的 config
对象为我提供了一个 kubernetes.Clientset
,它基于我当前的 kubectl
上下文。
函数 ClientConfig()
returns Kubernetes API 客户端配置,因此它没有关于您的配置文件的信息。
要获取当前上下文,需要调用RawConfig()
,然后有一个字段叫CurrentContext
。
下面的代码应该可以工作。
config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
&clientcmd.ConfigOverrides{
CurrentContext: "",
}).RawConfig()
currentContext := config.CurrentContext