Can';t覆盖Kubernetes Go客户端中的Kubernetes配置

Can';t覆盖Kubernetes Go客户端中的Kubernetes配置,go,kubernetes,kubernetes-go-client,Go,Kubernetes,Kubernetes Go Client,我想使用Kubernetes Go客户端在集群中执行各种操作。 我正在加载本地kubeconfig,其中包含多个集群和上下文。默认上下文是prod,我要覆盖的配置值之一是CurrentContext clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( &clientcmd.ClientConfigLoadingRules{ExplicitPath: "/Users/me/.

我想使用Kubernetes Go客户端在集群中执行各种操作。 我正在加载本地
kubeconfig
,其中包含多个集群和上下文。默认上下文是
prod
,我要覆盖的配置值之一是
CurrentContext

    clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
        &clientcmd.ClientConfigLoadingRules{ExplicitPath: "/Users/me/.kube/config"},
        &clientcmd.ConfigOverrides{
            CurrentContext: "stage",
        })

    rawConfig, _ := clientConfig.RawConfig()
    log.Printf(rawConfig.CurrentContext) // outputs "prod" instead of "stage"
当我检查
RawConfig()
时,当前上下文仍然是“prod”而不是“stage”。 为什么配置覆盖不起作用

还有,AuthInfo等的覆盖是如何工作的?覆盖仅接受单个
AuthInfo
,而配置包含
AuthInfo
等的映射

GitHub相关问题

为什么配置覆盖不起作用

//ClientConfig用于轻松获取api服务器客户端
类型ClientConfig接口{
//RawConfig返回所有覆盖的合并结果
RawConfig()(clientcmdapi.Config,错误)
RawConfig
应该返回带有覆盖的config,但实际上不是

func(config*DirectClientConfig)RawConfig()(clientcmdapi.config,错误){
return config.config,nil
}
只需返回配置而不覆盖。您可以在我的补丁中看到一个可能的解决方案

此外,AuthInfo等的覆盖是如何工作的?覆盖仅接受单个AuthInfo,而配置包含AuthInfo等的映射

仅使用context.AuthInfo(字符串)中显示的用户名键覆盖AuthInfo

//getAuthInfoName返回一个字符串,该字符串包含当前上下文的当前authinfo名称,
//以及一个布尔值,指示默认authInfo名称是否被用户集标志覆盖,或
//左作为其默认值
func(config*DirectClientConfig)getAuthInfoName()(字符串,bool){
如果len(config.overrides.Context.AuthInfo)!=0{
返回config.overrides.Context.AuthInfo,true
}
上下文,u:=config.getContext()
返回context.AuthInfo,false
}