From 3a1d606ee9252321c960f03b3233efcdde74fe0c Mon Sep 17 00:00:00 2001 From: Pierre Roudier Date: Fri, 21 Jun 2024 16:07:31 -0400 Subject: [PATCH] fix: respect ~/.kube/config as a symlink --- pkg/client/kubeconfig.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/client/kubeconfig.go b/pkg/client/kubeconfig.go index 31ea94bf7..3eb503f42 100644 --- a/pkg/client/kubeconfig.go +++ b/pkg/client/kubeconfig.go @@ -283,12 +283,22 @@ func KubeconfigWrite(ctx context.Context, kubeconfig *clientcmdapi.Config, path return fmt.Errorf("failed to write merged kubeconfig to temporary file '%s': %w", tempPath, err) } + // In case path is a symlink, retrives the name of the target + realPath, err := filepath.EvalSymlinks(path) + if err != nil { + return fmt.Errorf("failed to follow symlink '%s': %w", path, err) + } + // Move temporary file over existing KubeConfig - if err := os.Rename(tempPath, path); err != nil { + if err := os.Rename(tempPath, realPath); err != nil { return fmt.Errorf("failed to overwrite existing KubeConfig '%s' with new kubeconfig '%s': %w", path, tempPath, err) } - l.Log().Debugf("Wrote kubeconfig to '%s'", path) + extraLog := "" + if filepath.Clean(path) != realPath { + extraLog = fmt.Sprintf("(via symlink '%s')", path) + } + l.Log().Debugf("Wrote kubeconfig to '%s' %s", realPath, extraLog) return nil }