Я создал частный кластер на 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
Здесьявляются результатами моих попыток использовать некоторые из этих способов.