Merge pull request #68753 from johnSchnake/68687-consistentSSHKeyHandling

Make SSH path handling consistent across providers during e2e
This commit is contained in:
Kubernetes Prow Robot 2018-12-05 00:05:38 -08:00 committed by GitHub
commit 82cefcd99b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3601,44 +3601,43 @@ func DeletePodOrFail(c clientset.Interface, ns, name string) {
// GetSigner returns an ssh.Signer for the provider ("gce", etc.) that can be // GetSigner returns an ssh.Signer for the provider ("gce", etc.) that can be
// used to SSH to their nodes. // used to SSH to their nodes.
func GetSigner(provider string) (ssh.Signer, error) { func GetSigner(provider string) (ssh.Signer, error) {
// Get the directory in which SSH keys are located.
keydir := filepath.Join(os.Getenv("HOME"), ".ssh")
// Select the key itself to use. When implementing more providers here, // Select the key itself to use. When implementing more providers here,
// please also add them to any SSH tests that are disabled because of signer // please also add them to any SSH tests that are disabled because of signer
// support. // support.
keyfile := "" keyfile := ""
key := ""
switch provider { switch provider {
case "gce", "gke", "kubemark": case "gce", "gke", "kubemark":
keyfile = "google_compute_engine" keyfile = os.Getenv("GCE_SSH_KEY")
case "aws": if keyfile == "" {
// If there is an env. variable override, use that. keyfile = "google_compute_engine"
aws_keyfile := os.Getenv("AWS_SSH_KEY") }
if len(aws_keyfile) != 0 { case "aws":
return sshutil.MakePrivateKeySignerFromFile(aws_keyfile) keyfile = os.Getenv("AWS_SSH_KEY")
if keyfile == "" {
keyfile = "kube_aws_rsa"
} }
// Otherwise revert to home dir
keyfile = "kube_aws_rsa"
case "local", "vsphere": case "local", "vsphere":
keyfile = os.Getenv("LOCAL_SSH_KEY") // maybe? keyfile = os.Getenv("LOCAL_SSH_KEY")
if len(keyfile) == 0 { if keyfile == "" {
keyfile = "id_rsa" keyfile = "id_rsa"
} }
case "skeleton": case "skeleton":
keyfile = os.Getenv("KUBE_SSH_KEY") keyfile = os.Getenv("KUBE_SSH_KEY")
if len(keyfile) == 0 { if keyfile == "" {
keyfile = "id_rsa" keyfile = "id_rsa"
} }
default: default:
return nil, fmt.Errorf("GetSigner(...) not implemented for %s", provider) return nil, fmt.Errorf("GetSigner(...) not implemented for %s", provider)
} }
if len(key) == 0 { // Respect absolute paths for keys given by user, fallback to assuming
key = filepath.Join(keydir, keyfile) // relative paths are in ~/.ssh
if !filepath.IsAbs(keyfile) {
keydir := filepath.Join(os.Getenv("HOME"), ".ssh")
keyfile = filepath.Join(keydir, keyfile)
} }
return sshutil.MakePrivateKeySignerFromFile(key) return sshutil.MakePrivateKeySignerFromFile(keyfile)
} }
// CheckPodsRunningReady returns whether all pods whose names are listed in // CheckPodsRunningReady returns whether all pods whose names are listed in