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.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
こここれらは私がこれらの方法のいくつかを試した結果です。