From 0f2ad32362330fb7f6a20f0c967bbb8f2ef927ec Mon Sep 17 00:00:00 2001 From: Vladimir Iliakov Date: Wed, 1 Apr 2026 12:05:59 +0200 Subject: [PATCH] STAC-24446: sts-backup respects KUBECONFIG environment variable --- internal/clients/k8s/client.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/internal/clients/k8s/client.go b/internal/clients/k8s/client.go index 08b2f83..e955666 100644 --- a/internal/clients/k8s/client.go +++ b/internal/clients/k8s/client.go @@ -10,7 +10,6 @@ import ( "net/url" "os" "path" - "path/filepath" "time" appsv1 "k8s.io/api/apps/v1" @@ -36,18 +35,18 @@ func (c *Client) Clientset() kubernetes.Interface { return c.clientset } -// NewClient creates a new Kubernetes client +// NewClient creates a new Kubernetes client. +// Kubeconfig precedence: explicit flag > KUBECONFIG env var > ~/.kube/config func NewClient(kubeconfigPath string, debug bool) (*Client, error) { - if kubeconfigPath == "" { - // Use default kubeconfig location - home, err := os.UserHomeDir() - if err != nil { - return nil, fmt.Errorf("failed to get home directory: %w", err) - } - kubeconfigPath = filepath.Join(home, ".kube", "config") + loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() + if kubeconfigPath != "" { + loadingRules.ExplicitPath = kubeconfigPath } - config, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath) + config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( + loadingRules, + &clientcmd.ConfigOverrides{}, + ).ClientConfig() if err != nil { return nil, fmt.Errorf("failed to build config: %w", err) }