fix: respect ~/.kube/config as a symlink (#1455)

main
Pierre Roudier 1 week ago committed by GitHub
parent 85347bdcf3
commit b849828c9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 14
      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
}

Loading…
Cancel
Save