Criei um cluster privado no GKE e um NAT está configurado junto com o cluster. Também tenho uma configuração de bastião para acessar o cluster privado. Estou tentando fazer SSH em um dos nós e não consigo, pois os nós privados não possuem um IP externo. Existe alguma maneira de fazer isso?
Responder1
Você poderia usar o "gcloud"comando SSH em suas instâncias, presumindo que as regras de firewall do GCP estejam em vigor.
gcloud compute ssh example-instance --zone=us-central1-a
Responder2
A maneira como você faz o ssh em um nó do GKE não é diferente (AFAICT) do ssh em uma instância do GCE.
Existem basicamente duas maneiras (a menos que esteja faltando alguma coisa):
No primeiro casovocê adiciona USER:$(cat ~/.ssh/id_rsa.pub)
metadados à instância (ou metadados do projeto se quiser ter acesso a todas as VMs do projeto):
$ gcloud compute instances add-metadata INSTANCE \
--metadata="ssh-keys=me:`cat ~/.ssh/id_rsa.pub`" \
--zone ZONE --project PROJECT_ID
adicione seu IP de origem às regras de firewall:
$ gcloud compute firewall-rules create allow-ssh \
--source-ranges SOURCE_IP --allow tcp:22 \
--project PROJECT_ID
e conecte-se ao nó:
$ ssh me@EXTERNAL_IP
Use gcloud compute instances list --project PROJECT_ID --filter name:NAME
para aprender o IP externo.
Alternativamente, você pode se conectar com:
$ gcloud compute ssh [USER@]INSTANCE \
--zone ZONE --project PROJECT_ID
Ele adicionará sua chave aos metadados do projeto automaticamente. Para fazê-lo, adicione-o block-project-ssh-keys = true
primeiro ao conjunto de metadados da instância:
$ gcloud compute instances add-metadata INSTANCE \
--metadata=block-project-ssh-keys=true \
--zone ZONE --project PROJECT_ID
A forma de login do sistema operacional:
$ gcloud compute instances add-metadata INSTANCE \
--metadata=enable-oslogin=true \
--zone ZONE --project PROJECT_ID
$ gcloud compute ssh INSTANCE \
--zone ZONE --project PROJECT_ID
No caso de um nó privadoo acima ainda é válido, mas além disso você precisa se conectar por meio de um servidor VPN em execução na sub-rede do nó,usar IAP, ouSSH no navegador(que usa IAP).
Você pode descobrir como iniciar uma instância de servidor VPN noseguindo a essência( vpn.tf
, openvpn-server.sh
).
No caso de IAP e SSH no navegador, você precisa adicionar acesso à porta 22 de 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
e adicione --tunnel-through-iap
:
$ gcloud compute ssh INSTANCE --tunnel-through-iap \
--zone ZONE --project PROJECT_ID
Aquisão os resultados de eu tentar algumas dessas maneiras.