如何使用 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