Skip to content

Commit

Permalink
fix: respect ~/.kube/config as a symlink (#1455)
Browse files Browse the repository at this point in the history
  • Loading branch information
proudier authored Jun 25, 2024
1 parent 85347bd commit b849828
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions pkg/client/kubeconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down

0 comments on commit b849828

Please sign in to comment.