プライベート クラスタ上の GKE ノードに SSH 接続する

プライベート クラスタ上の GKE ノードに SSH 接続する

GKE にプライベート クラスターを作成し、クラスターとともに NAT を構成しました。また、プライベート クラスターにアクセスするための要塞もセットアップしました。ノードの 1 つに SSH 接続しようとしていますが、プライベート ノードには外部 IP がないため、接続できません。これを実行する方法はありますか?

答え1

クラウドGCP ファイアウォール ルールが適用されていることを前提として、インスタンスに SSH で接続するには、" コマンドを使用します。

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

答え2

GKE ノードに SSH 接続する方法は、GCE インスタンスに SSH 接続する方法と変わりません (AFAICT)。

基本的に 2 つの方法があります (何か見落としていない限り):

最初のケースではUSER:$(cat ~/.ssh/id_rsa.pub)インスタンス メタデータ (または、すべてのプロジェクト VM へのアクセス権を付与する場合はプロジェクト メタデータ) に追加します。

$ 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

OS ログインの方法:

$ 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.tfopenvpn-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

こここれらは私がこれらの方法のいくつかを試した結果です。

関連情報