I'm attempting to deploy k8s "the hard way" using a terraform deployment. Please find the repo here: https://github.com/aidanSoles/kubernetes-the-hard-way-terraform
It was written using Terraform 0.11 so I elected not to upgrade the code to 0.12.
The deployment creates Google Cloud Platform virtual machines and attempts to run scripts on them.
The error message I get when applying the configuration is:
Error: Error applying plan:
2 errors occurred:
* google_compute_instance.k8s_worker: timeout - last error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
* google_compute_instance.k8s_controller: timeout - last error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remainHere's a snippet of the google_compute_instance provisionner:
resource "google_compute_instance" "k8s_controller" {
boot_disk {
auto_delete = true
initialize_params {
image = "${var.controller_image}"
size = "${var.controller_size}"
}
}
can_ip_forward = true
count = "${var.controller_count}"
machine_type = "${var.controller_type}"
name = "k8s-controller${count.index}"
network_interface {
access_config = {}
subnetwork = "${google_compute_subnetwork.k8s_subnet.name}"
}
metadata {
creator = "${var.user}"
}
provisioner "file" {
connection {
private_key = "${file(var.ssh_path)}"
user = "${var.user}"
type = "ssh"
}
destination = "add-ssh-keys.sh"
source = "${var.scripts_path}/add-ssh-keys.sh"
}
}
You could find the full script here: https://github.com/aidanSoles/kubernetes-the-hard-way-terraform/blob/master/compute.tf
I ensured that the user and ssh_path variable values are correct by doing ssh -i. I also tried adding the agent = false parameter to the file provisionner with no avail.
Any idea what could be the root of the issue? Many thanks.
Regarding the documentation:
I have followed that guide and confirm that it's working.
I have attempted that with terraform-0.11.14 . It appeared that the config files aren't compatible with terraform 0.12 at the moment.
Regarding the error:
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remainPlease check the following:
if your <username>@<hostname> combination matches the ones you have in your public key provided on step "5. Create a service account". You can get these with hostname and whoami commands.
$ whoami && hostname
superman
my_pc
$ cat ~/.ssh/tform_rsa.pub | awk '{print $3}'
superman@my_pcI succeed reproducing exact same symptoms only when made typo in a public key I pasted under Metadata/SSH Keys on GCP. That is why either there is a typo or mismatch between private key you specified in variables.tf and public key uploaded to GCP.
permissions on your private key (the one you are using for ssh ). It shall be set to 600 (-rw-------) as well as permissions on key files in certs directory.
Hope that helps :-)