SSH en un nodo de GKE en un clúster privado

SSH en un nodo de GKE en un clúster privado

Creé un clúster privado en GKE y se configuró una NAT junto con el clúster. También tengo una configuración de bastión para acceder al clúster privado. Estoy intentando conectar mediante SSH a uno de los nodos y no puedo hacerlo porque los nodos privados no tienen una IP externa. ¿Hay alguna forma en que pueda hacer esto?

Respuesta1

Podrías usar el "nube de gcloud"comando SSH en sus instancias suponiendo que las reglas de firewall de GCP estén implementadas.

gcloud compute ssh example-instance --zone=us-central1-a

Respuesta2

La forma en que ingresa a un nodo de GKE no es diferente (AFAICT) de la forma en que ingresa a una instancia de GCE.

Básicamente hay dos formas (a menos que me falte algo):

En el primer casoagrega USER:$(cat ~/.ssh/id_rsa.pub)a los metadatos de la instancia (o metadatos del proyecto si desea tener acceso a todas las máquinas virtuales del proyecto):

$ gcloud compute instances add-metadata INSTANCE \
  --metadata="ssh-keys=me:`cat ~/.ssh/id_rsa.pub`" \
  --zone ZONE --project PROJECT_ID

agregue su IP de origen a las reglas del firewall:

$ gcloud compute firewall-rules create allow-ssh \
  --source-ranges SOURCE_IP --allow tcp:22 \
  --project PROJECT_ID

y conectarse al nodo:

$ ssh me@EXTERNAL_IP

Úselo gcloud compute instances list --project PROJECT_ID --filter name:NAMEpara conocer la IP externa.

Alternativamente puedes conectarte con:

$ gcloud compute ssh [USER@]INSTANCE \
  --zone ZONE --project PROJECT_ID

Agregará su clave a los metadatos del proyecto automáticamente. Para hacerlo, agréguelo block-project-ssh-keys = trueprimero al conjunto de metadatos de la instancia:

$ gcloud compute instances add-metadata INSTANCE \
  --metadata=block-project-ssh-keys=true \
  --zone ZONE --project PROJECT_ID

La forma de iniciar sesión en el sistema operativo:

$ gcloud compute instances add-metadata INSTANCE \
  --metadata=enable-oslogin=true \
  --zone ZONE --project PROJECT_ID
$ gcloud compute ssh INSTANCE \
  --zone ZONE --project PROJECT_ID

En caso de un nodo privadolo anterior sigue siendo válido, pero además debe conectarse a través de un servidor VPN que se ejecuta en la subred del nodo,utilizar IAP, oSSH en el navegador(que utiliza IAP).

Puede descubrir cómo iniciar una instancia de servidor VPN desdesiguiente esencia( vpn.tf, openvpn-server.sh).

En el caso de IAP y SSH en el navegador, debe agregar acceso al puerto 22 desde 35.235.240.0/20:

$ gcloud compute firewall-rules create allow-ssh \
  --source-ranges 35.235.240.0/20 --allow tcp:22 \
  --project PROJECT_ID

y añadir --tunnel-through-iap:

$ gcloud compute ssh INSTANCE --tunnel-through-iap \
  --zone ZONE --project PROJECT_ID

Aquíson los resultados de intentar algunas de estas formas.

información relacionada