From e3b21ec5ecd5f823470c2c2f570ed89a2c071b5a Mon Sep 17 00:00:00 2001 From: Jian Zhang Date: Sun, 20 Aug 2023 03:11:11 +0800 Subject: [PATCH] fix: use kubeconfig file when user specify it (#605) If user specify `--kubeconfig` when running k8sgpt, it should use the kubeconfig file to login the corresponding cluster instead of getting auth info via SA. Closes #604 Signed-off-by: Jian Zhang --- pkg/kubernetes/kubernetes.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pkg/kubernetes/kubernetes.go b/pkg/kubernetes/kubernetes.go index 342f1aa65e..82294d591e 100644 --- a/pkg/kubernetes/kubernetes.go +++ b/pkg/kubernetes/kubernetes.go @@ -36,14 +36,11 @@ func (c *Client) GetRestClient() rest.Interface { func NewClient(kubecontext string, kubeconfig string) (*Client, error) { var config *rest.Config - config, err := rest.InClusterConfig() - if err != nil { - loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() - - if kubeconfig != "" { - loadingRules.ExplicitPath = kubeconfig - } + var err error + if kubeconfig != "" { + loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() + loadingRules.ExplicitPath = kubeconfig clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( loadingRules, &clientcmd.ConfigOverrides{ @@ -54,7 +51,13 @@ func NewClient(kubecontext string, kubeconfig string) (*Client, error) { if err != nil { return nil, err } + } else { + config, err = rest.InClusterConfig() + if err != nil { + return nil, err + } } + clientSet, err := kubernetes.NewForConfig(config) if err != nil { return nil, err