SSH を使用したクラスタノードへの接続

このページでは、Google Distributed Cloud クラスタノードに SSH で接続する方法について説明します。

このページは、基盤となる技術インフラストラクチャのライフサイクルを管理する IT 管理者と運用担当者を対象としています。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザーのロールとタスクをご覧ください。

制限事項

クラスタの作成後に、ユーザー クラスタと管理クラスタの SSH 認証鍵を変更またはローテーションすることはできません。セキュリティ ポリシーで SSH 認証鍵を定期的にローテーションするよう定められている場合は、クラスタを再作成して新しい SSH 認証鍵を確立してください。

始める前に

以降の手順を行う前に、ユーザー クラスタと管理クラスタの kubeconfig ファイルの場所を確認しておく必要があります。デフォルトでは、これらのファイルは、管理者クラスタとユーザー クラスタを作成したディレクトリに保存されます。kubeconfig の詳細については、GKE ドキュメントの kubectl 用のクラスタ アクセスの構成をご覧ください。

クラスタノードの IP アドレスを取得する

ユーザー クラスタノードの IP アドレスを取得します。

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes --output wide

ここで、[USER_CLUSTER_KUBECONFIG] はユーザー クラスタの kubeconfig ファイルのパスです。

管理クラスタノードの IP アドレスを取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get nodes --output wide

ここで、[ADMIN_CLUSTER_KUBECONFIG] は管理クラスタの kubeconfig ファイルのパスです。

どちらのコマンドでも、INTERNAL-IP フィールドをメモします。これらはノードの IP アドレスです。NAME フィールドには、固有の ID が付加されたユーザー クラスタの名前が含まれます。たとえば、my-user-cluster-12345678-abcdef というノードは my-user-cluster という名前のユーザー クラスタの一部です。

SSH を使用してユーザー クラスタ ノードに接続する

ユーザー クラスタの SSH 認証鍵を取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n [USER_CLUSTER_NAME] ssh-keys \
-o jsonpath='{.data.ssh\.key}' | base64 -d > \
~/.ssh/[USER_CLUSTER_NAME].key && chmod 600 ~/.ssh/[USER_CLUSTER_NAME].key

ここで

  • [ADMIN_CLUSTER_KUBECONFIG] は、管理クラスタの kubeconfig ファイルのパスです。

  • [USER_CLUSTER_NAME] は、ユーザー クラスタの名前です。これは、ユーザー クラスタの作成時に指定した名前です。

上記のコマンドによって、次の処理が実行されます。

  • 管理クラスタから、[USER_CLUSTER_NAME] Namespace で ssh-keys という名前の Secret の ssh.key フィールドを取得します。

  • 鍵を Base64 でデコードします。

  • デコードされた鍵をファイル ~/.ssh/[USER_CLUSTER_NAME].key に保存します。

  • 鍵ファイルに適切なアクセス権を設定します。

鍵を使用してユーザー クラスタノードに SSH 接続します。

ssh -i ~/.ssh/[USER_CLUSTER_NAME].key anthos@[USER_NODE_IP]

ここで、[USER_NODE_IP]以前に収集したユーザー クラスタ内のノードの内部 IP アドレスです。

SSH を使用した管理クラスタノードへの接続

管理クラスタの SSH 認証鍵を取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n kube-system sshkeys \
-o jsonpath='{.data.vsphere_tmp}' | base64 -d > \
~/.ssh/admin-cluster.key && chmod 600 ~/.ssh/admin-cluster.key

ここで、[ADMIN_CLUSTER_KUBECONFIG] は管理クラスタの kubeconfig ファイルのパスです。

上記のコマンドによって、次の手順が行われます。

  • 管理クラスタから、kube-system Namespace で sshkeys という名前の Secret の vsphere_tmp フィールドを取得します。

  • Base64 で vsphere_tmp フィールドをデコードします。これが鍵となります。

  • デコードされた鍵をファイル ~/.ssh/admin-cluster.key に保存します。

  • 鍵ファイルに適切なアクセス権を設定します。

鍵を使用して管理クラスタノードに SSH 接続します。

ssh -i ~/.ssh/admin-cluster.key anthos@[ADMIN_NODE_IP]

ここで、[ADMIN_NODE_IP]以前に収集した管理クラスタ内のノードの内部 IP アドレスです。