Estoy tratando de crear un clúster de kubernetes usando EKS. El comando que estoy usando es
eksctl create cluster --name prod --version 1.14 --region us-west-2 --nodegroup-name standard-workers --node-type t3.medium --nodes 3 --nodes-min 1 --nodes-max 4 --ssh-access --ssh-public-key <pathto>/certificate.pem --managedEl certificado.pem anterior es el certificado x.509 que descargué de la página "Mis credenciales de seguridad" de la consola de AWS. El comando arroja un error:
Error: computing fingerprint for key "/Users/xxxx/work/tech/aws/certificate.pem": error decoding SSH public key: "-----BEGIN CERTIFICATE-----\nMIIDhjCCAm6gAwIBAgIVAKuhOc5Vbrgl7Y3ZfxBAj9uY9aeDMA0GCSqGSIb3DQEB\nBQUAMFMxITAfBgNVBAMMGEFXUyBM -----FIN DEL CERTIFICADO-----\n" error: datos base64 ilegales en el byte de entrada 11¿Qué espera el eksctl ssh-public-key aquí?
Entiendo. El formato del certificado no es lo que le gusta a eksctl. Terminé convirtiendo private_key.pem descargado de AWS y lo convertí al formato de clave ssh pub usando el comando:
ssh-keygen -y -f private_key.pem > public_key.pemPuede seguir la documentación de eksctl para este asunto. Como está claramente documentado, tiene dos opciones.
Acceso SSH
Para permitir el acceso SSH a los nodos, eksctl importa ~/.ssh/id_rsa.pub de forma predeterminada, para usar una clave pública SSH diferente, por ejemplo, my_eks_node_id.pub , ejecute:
eksctl create cluster --ssh-access --ssh-public-key=my_eks_node_id.pubEste es el método sugerido por la otra respuesta.
Para usar un par de claves EC2 preexistente en la región us-east-1 , puede especificar el nombre del par de claves (que no debe resolverse en una ruta de archivo local), por ejemplo, para usar my_kubernetes_key ejecute:
eksctl create cluster --ssh-access --ssh-public-key=my_kubernetes_key --region=us-east-1Dado que está utilizando un par de claves almacenado en aws, puede utilizar este método. Esta es la manera fácil y no necesita tener el archivo en la máquina local.