SSH-подключение к узлу GKE на частном кластере

SSH-подключение к узлу GKE на частном кластере

Я создал частный кластер на GKE, и NAT настроен вместе с кластером. У меня также есть настройка бастиона для доступа к частному кластеру. Я пытаюсь подключиться по SSH к одному из узлов и не могу этого сделать, так как частные узлы не имеют внешнего IP. Есть ли способ сделать это?

решение1

Вы можете использовать "gcloud" для подключения по SSH к вашим экземплярам, ​​предполагая, что правила брандмауэра GCP установлены.

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

решение2

Способ подключения по ssh к узлу GKE ничем не отличается (AFAICT) от подключения по ssh к экземпляру GCE.

По сути, есть два способа (если я ничего не упускаю):

В первом случаевы добавляете USER:$(cat ~/.ssh/id_rsa.pub)к метаданным экземпляра (или метаданным проекта, если вы хотите получить доступ ко всем виртуальным машинам проекта):

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

добавьте исходный IP-адрес в правила брандмауэра:

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

и подключитесь к узлу:

$ ssh me@EXTERNAL_IP

Используйте gcloud compute instances list --project PROJECT_ID --filter name:NAMEдля определения внешнего IP-адреса.

В качестве альтернативы вы можете связаться с нами:

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

Он автоматически добавит ваш ключ в метаданные проекта. Чтобы добавить его в набор метаданных экземпляра block-project-ssh-keys = trueпервым:

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

Способ входа в ОС:

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

В случае частного узлавышеизложенное по-прежнему актуально, но дополнительно вам необходимо подключиться через VPN-сервер, работающий в подсети узла,использовать IAP, илиSSH-в-браузере(который использует IAP).

Вы можете узнать, как запустить экземпляр VPN-сервера изследующая суть( vpn.tf, openvpn-server.sh).

В случае IAP и SSH-в-браузере вам необходимо добавить доступ к порту 22 из 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

и добавить --tunnel-through-iap:

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

Здесьявляются результатами моих попыток использовать некоторые из этих способов.

Связанный контент