diff --git a/cli/cmd/checkRunner.go b/cli/cmd/checkRunner.go index 0a4e9e974..bd9c69929 100644 --- a/cli/cmd/checkRunner.go +++ b/cli/cmd/checkRunner.go @@ -65,7 +65,7 @@ func runMizuCheck() { func checkKubernetesApi() (*kubernetes.Provider, *semver.SemVersion, bool) { logger.Log.Infof("\nkubernetes-api\n--------------------") - kubernetesProvider, err := kubernetes.NewProvider(config.Config.KubeConfigPath()) + kubernetesProvider, err := kubernetes.NewProvider(config.Config.KubeConfigPath(), config.Config.KubeContext) if err != nil { logger.Log.Errorf("%v can't initialize the client, err: %v", fmt.Sprintf(uiUtils.Red, "✗"), err) return nil, nil, false diff --git a/cli/cmd/common.go b/cli/cmd/common.go index 8b9435e6e..b822097d5 100644 --- a/cli/cmd/common.go +++ b/cli/cmd/common.go @@ -61,7 +61,7 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx con } func getKubernetesProviderForCli() (*kubernetes.Provider, error) { - kubernetesProvider, err := kubernetes.NewProvider(config.Config.KubeConfigPath()) + kubernetesProvider, err := kubernetes.NewProvider(config.Config.KubeConfigPath(), config.Config.KubeContext) if err != nil { handleKubernetesProviderError(err) return nil, err diff --git a/cli/config/configStruct.go b/cli/config/configStruct.go index c64c795a0..8ef12f5b6 100644 --- a/cli/config/configStruct.go +++ b/cli/config/configStruct.go @@ -36,6 +36,7 @@ type ConfigStruct struct { Telemetry bool `yaml:"telemetry" default:"true"` DumpLogs bool `yaml:"dump-logs" default:"false"` KubeConfigPathStr string `yaml:"kube-config-path"` + KubeContext string `yaml:"kube-context"` ConfigFilePath string `yaml:"config-path,omitempty" readonly:""` HeadlessMode bool `yaml:"headless" default:"false"` LogLevelStr string `yaml:"log-level,omitempty" default:"INFO" readonly:""` diff --git a/shared/kubernetes/provider.go b/shared/kubernetes/provider.go index b4157d198..764e6bc68 100644 --- a/shared/kubernetes/provider.go +++ b/shared/kubernetes/provider.go @@ -56,8 +56,8 @@ const ( sysfsMountPath = "/sys" ) -func NewProvider(kubeConfigPath string) (*Provider, error) { - kubernetesConfig := loadKubernetesConfiguration(kubeConfigPath) +func NewProvider(kubeConfigPath string, contextName string) (*Provider, error) { + kubernetesConfig := loadKubernetesConfiguration(kubeConfigPath, contextName) restClientConfig, err := kubernetesConfig.ClientConfig() if err != nil { if clientcmd.IsEmptyConfig(err) { @@ -1212,7 +1212,7 @@ func ValidateKubernetesVersion(serverVersionSemVer *semver.SemVersion) error { return nil } -func loadKubernetesConfiguration(kubeConfigPath string) clientcmd.ClientConfig { +func loadKubernetesConfiguration(kubeConfigPath string, context string) clientcmd.ClientConfig { logger.Log.Debugf("Using kube config %s", kubeConfigPath) configPathList := filepath.SplitList(kubeConfigPath) configLoadingRules := &clientcmd.ClientConfigLoadingRules{} @@ -1221,7 +1221,7 @@ func loadKubernetesConfiguration(kubeConfigPath string) clientcmd.ClientConfig { } else { configLoadingRules.Precedence = configPathList } - contextName := "" + contextName := context return clientcmd.NewNonInteractiveDeferredLoadingClientConfig( configLoadingRules, &clientcmd.ConfigOverrides{