如何使用 client-go 获取当前的 k8s 上下文名称

pka*_*mol 2 go kubernetes client-go

我正在尝试获取/打印当前上下文的名称,kubernetes因为它是在~/.kube/config使用中配置的client-go

我已成功验证并获取*rest.Config对象

    config, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
        &clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
        &clientcmd.ConfigOverrides{
            CurrentContext: "",
        }).ClientConfig()
Run Code Online (Sandbox Code Playgroud)

但我在结构中没有看到任何相关字段config

请注意,尽管我在返回的对象中传递了一个空字符串()"",但它还是为我提供了一个基于我当前上下文的字符串。ConfigOverridesconfigkubernetes.Clientsetkubectl

Raf*_*zko 10

该函数ClientConfig()返回 Kubernetes API 客户端配置,因此它没有有关您的配置文件的信息。

要获取当前上下文,您需要调用RawConfig(),然后有一个名为 的字段CurrentContext

下面的代码应该可以工作。

    config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
        &clientcmd.ClientConfigLoadingRules{ExplicitPath: pathToKubeConfig},
        &clientcmd.ConfigOverrides{
            CurrentContext: "",
        }).RawConfig()
    currentContext := config.CurrentContext
Run Code Online (Sandbox Code Playgroud)