Node Agent を使用するようにクラスタを移行する

このドキュメントでは、新しいクラスタと既存のクラスタで Node Agent の使用を有効にして、より安全なクラスタ オペレーションを実現する方法について説明します。バージョン 1.33 以降では、Google Distributed Cloud for bare metal で、クラスタ オペレーションに SSH 経由で Ansible を使用する方法から、Node Agent を使用するより安全なエージェント ベースのモデルに移行できます。Node Agent を使用してクラスタ オペレーションを管理することで、機密性の高い環境で顧客ノードへの SSH アクセスが必要になるというセキュリティ上の懸念に対処できます。新しいモデルでは、各ノードで Node Agent バイナリが実行されます。Node Agent は、安全な gRPC チャネルを介してコントローラなどのクライアントと通信し、すべてのノード構成アクティビティを管理します。Google Distributed Cloud は、gRPC 接続の認証と暗号化のために、クラスタ コントローラとノード エージェントの間、および bmctl とノード エージェントの間で相互 Transport Layer Security(mTLS)を適用します。

bmctl nodeagent コマンドを使用すると、既存のクラスタを移行して Node Agent を使用するプロセスが簡単かつ確実になります。これらのコマンドを使用すると、手作業が減り、ノード間の一貫性が向上し、証明書の作成やローテーションなどの重要なタスクが自動化されます。bmctl コマンドは主に SSH 経由で動作します。これにより、クラスタ コントローラが異常な状態である場合や、標準の通信チャネルが損なわれている場合でも、管理者はエージェントをデプロイまたは再デプロイできます。

Node Agent と対応する bmctl nodeagent コマンドは、Google Distributed Cloud for Bare Metal バージョン 1.33.0 以降をサポートしています。Node Agent は、既存のバージョン 1.33 以降のクラスタで有効にするか、バージョン 1.33 以降のクラスタの作成時に有効にすることができます。

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

始める前に

クラスタを Node Agent モードに移行する前に、すべてのクラスタノードが次の要件を満たしていることを確認します。

  • 各ノードには、Node Agent 専用のオープンポートがあります。デフォルトでは、Node Agent はポート 9192 を使用しますが、デプロイ、有効化、新しいクラスタのインストール時にこのポートを構成できます。詳細については、Node Agent ポートをカスタマイズするをご覧ください。

  • 各ノードに containerd バージョン 1.7 以降がインストールされている。

ノード エージェント モードに移行する

Node Agent モードへの移行は、次の 2 つの手順で行います。

  1. ノード エージェントをデプロイする: ノード エージェント コンポーネントをクラスタ内のすべてのノードにデプロイします。

  2. ノード エージェント モードを有効にする:

    • 既存のクラスタの場合は、bmctl nodeagent コマンドを使用してモードを有効にします。
    • 新しいクラスタの場合は、作成前に有効化アノテーションと対応する認証情報のパスをクラスタ構成ファイルに追加します。

ノード エージェントをデプロイする

bmctl nodeagent deploy コマンドは、SSH を使用して、指定されたクラスタ内の 1 つ以上のターゲット ノードに Node Agent サービスをデプロイします。このコマンドは、Node Agent をインストールまたは再インストールします。SSH 経由で接続し、バイナリの転送、証明書の生成と転送(オプション)、systemd サービスのセットアップなど、必要な手順を実行します。これには、ターゲット ノードに対する SSH アクセスと sudo 権限が必要です。

ターゲット ノードは、--nodes フラグを使用して直接指定する方法、--cluster フラグを使用してクラスタ構成ファイルで指定する方法、クラスタ カスタム リソースを参照する方法など、いくつかの方法で指定できます。Node Agent のコマンドとオプションの詳細については、bmctl コマンド リファレンスをご覧ください。

新しい環境にデプロイする

初回デプロイの場合は、nodeagentd バイナリをダウンロードして、新しい認証局(CA)を生成します。次のコマンドは、クラスタ構成ファイルからノードリストを取得します。--sa-key フラグは、Cloud Storage バケットから nodeagentd バイナリをダウンロードするために必要な認証情報を提供します。

  • 新しいクラスタに Node Agent を初めてデプロイするには、次のコマンドを使用します。

    bmctl nodeagent deploy \
        --pull-binaries true \
        --generate-ca-creds true \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH
    

    次のように置き換えます。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • USERNAME: ノードへの SSH アクセスが構成されているユーザー名。デフォルトでは、SSH は root 用に構成されていますが、ログイン ユーザーを設定した場合は、そのユーザー名を使用します。

    • SSH_KEY_PATH: SSH 秘密鍵ファイルのパス。

    • SERVICE_ACCOUNT_KEY_PATH: レジストリ イメージを pull する権限を持つサービス アカウント キーファイルのパス。デフォルトでは、これは anthos-baremetal-gcr サービス アカウントの JSON キーファイルです。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-175703/nodeagent_deploy.log
    [2025-08-19 17:57:03+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 17:57:05+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 17:57:05+0000]   Target Cluster:            demo-cluster
    [2025-08-19 17:57:05+0000]   SSH User:                  root
    [2025-08-19 17:57:05+0000]   SSH Key:                   rootSSH
    [2025-08-19 17:57:05+0000]   Concurrency:               25
    [2025-08-19 17:57:05+0000]   Generate Credentials:      true
    [2025-08-19 17:57:05+0000]   Deploy Credentials:        true
    [2025-08-19 17:57:05+0000]   Server Cert Validity Days: 1825
    [2025-08-19 17:57:05+0000]   Verify SSH Host Keys:      true
    [2025-08-19 17:57:05+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 17:57:05+0000]   Target Nodes Source:       cluster YAML
    [2025-08-19 17:57:05+0000]   Nodes Port:                9192
    [2025-08-19 17:57:05+0000]   Target Nodes (4):          10.200.0.2, 10.200.0.3, 10.200.0.4, 10.200.0.5
    [2025-08-19 17:57:05+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]: y
    [2025-08-19 17:57:07+0000] INFO: User confirmed.
    [2025-08-19 17:57:07+0000] Downloading Node Agent binary (1.33.0-gke.799)... OK
    [2025-08-19 17:57:08+0000] INFO: Node Agent binary pulled and stored at bmctl-workspace/bins/nodeagentd
    [2025-08-19 17:57:08+0000] INFO: Starting generate credentials (CAs and client credentials) phase...
    [2025-08-19 17:57:08+0000] Generating credentials for the cluster: demo-cluster, 2025-08-19T17:57:08Z
    [2025-08-19 17:57:08+0000] ------------ Credentials Options ------------
    [2025-08-19 17:57:08+0000] Cluster Name:           demo-cluster
    [2025-08-19 17:57:08+0000] Key Algorithm:          rsa
    [2025-08-19 17:57:08+0000] Key Length:             4096
    [2025-08-19 17:57:08+0000] CA Validity (days):     3650
    [2025-08-19 17:57:08+0000] Client Validity (days): 1825
    [2025-08-19 17:57:08+0000] Server CA CN:           Node Agent Server CA
    [2025-08-19 17:57:08+0000] Client CA CN:           Node Agent Client CA
    [2025-08-19 17:57:08+0000] Creds path:             bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:08+0000] --------------------------------------------
    [2025-08-19 17:57:08+0000] Generating credentials... OK
    [2025-08-19 17:57:19+0000] Certificates have been created and stored in bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:19+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 17:57:19+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=GCD-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 17:57:19+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=GCD-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 17:57:19+0000] ===============================================
    [2025-08-19 17:57:19+0000] --- Starting Artifact Preparation ---
    [2025-08-19 17:57:19+0000] Starting artifact preparation for 4 nodes (concurrency: 25)...
    [2025-08-19 17:57:23+0000] --- Finished Artifact Preparation ---
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.2
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.3
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.4
    [2025-08-19 17:57:23+0000] INFO: Preparation SUCCEEDED for node 10.200.0.5
    [2025-08-19 17:57:23+0000] ===============================================
    [2025-08-19 17:57:23+0000] --- Starting Deployment Phase ---
    [2025-08-19 17:57:23+0000] INFO: Starting deployment to 4 nodes (Concurrency: 25)...
    [2025-08-19 17:57:36+0000] INFO: All host deployments finished.
    [2025-08-19 17:57:36+0000] INFO: --- Deployment Phase Completed Successfully ---
    [2025-08-19 17:57:36+0000]
    ===============================================
    --- Deployment Summary ---
      Host: 10.200.0.2, Status: SUCCESS
      Host: 10.200.0.3, Status: SUCCESS
      Host: 10.200.0.4, Status: SUCCESS
      Host: 10.200.0.5, Status: SUCCESS
    -----------------------------------------------
    Total Nodes Attempted: 4 | SUCCESS: 4 | FAILED: 0
    ===============================================
    

Node エージェントのバージョンをアップグレードする

Node Agent のアップグレードは、クラスタのアップグレードとは別に行われます。Node Agent をアップグレードするには、bmctl nodeagent deploy コマンドを使用し、--pull-binariestrue に設定します。Node Agent をアップグレードするときに、--generate-ca-credsfalse に設定して、CA を再生成するのではなく、既存の CA を使用します。CA を再生成するには、対応するクラスタ認証情報を更新する必要があります。このプロセスは認証情報のローテーション用に予約されています。出力は新しいデプロイに似ていますが、CA 生成ログはありません。

Node Agent をアップグレードすると、Node Agent プロセスが再起動され、実行中のジョブが中断される可能性があります。ほとんどのジョブは再試行メカニズムによって復元されますが、潜在的な中断を最小限に抑えるには、次の手順を行います。

  1. クラスタのアップグレードや、インストール後の他の構成アクティビティが進行中ではないことを確認します。

  2. クラスタが実行状態であることを確認します。

  3. Node Agent のアップグレードを開始します。

    bmctl nodeagent deploy \
        --pull-binaries true \
        --generate-ca-creds false \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH
    

    次のように置き換えます。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • USERNAME: ノードへの SSH アクセスが構成されているユーザー名。デフォルトでは、SSH は root 用に構成されていますが、ログイン ユーザーを設定した場合は、そのユーザー名を使用します。

    • SSH_KEY_PATH: SSH 秘密鍵ファイルのパス。

    • SERVICE_ACCOUNT_KEY_PATH: レジストリ イメージを pull する権限を持つサービス アカウント キーファイルのパス。デフォルトでは、これは anthos-baremetal-gcr サービス アカウントの JSON キーファイルです。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-180416/nodeagent_deploy.log
    [2025-08-19 18:04:16+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 18:04:18+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 18:04:18+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:04:18+0000]   SSH User:                  root
    [2025-08-19 18:04:18+0000]   SSH Key:                   rootSSH
    [2025-08-19 18:04:18+0000]   Concurrency:               25
    [2025-08-19 18:04:18+0000]   Generate Credentials:      false
    [2025-08-19 18:04:18+0000]   Deploy Credentials:        true
    [2025-08-19 18:04:18+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:04:18+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:04:18+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 18:04:18+0000]   Target Nodes Source:       cluster YAML
    [2025-08-19 18:04:18+0000]   Nodes Port:                9192
    [2025-08-19 18:04:18+0000]   Target Nodes (4):          10.200.0.2, 10.200.0.3, 10.200.0.4, 10.200.0.5
    [2025-08-19 18:04:18+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]: y
    [2025-08-19 18:04:20+0000] INFO: User confirmed.
    [2025-08-19 18:04:20+0000] Downloading Node Agent binary (1.33.0-gke.799)... OK
    [2025-08-19 18:04:22+0000] INFO: Node Agent binary pulled and stored at bmctl-workspace/bins/nodeagentd
    [2025-08-19 18:04:22+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:04:22+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:04:22+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:04:22+0000] ===============================================
    [2025-08-19 18:04:22+0000] --- Starting Artifact Preparation ---
    [2025-08-19 18:04:22+0000] Starting artifact preparation for 4 nodes (concurrency: 25)...
    

特定のノードにデプロイまたは再デプロイする

クラスタノードを追加または復元する場合は、クラスタ内のすべてのノードにデプロイするのではなく、Node Agent のデプロイの対象を特定のノードに設定できます。--nodes フラグを使用して、デプロイするノードを指定します。

  • 特定のノードに Node Agent をデプロイするには、次のコマンドを使用します。

    bmctl nodeagent deploy \
        --pull-binaries true \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH \
        --sa-key SERVICE_ACCOUNT_KEY_PATH \
        --nodes NODE_IP_ADDRESS_LIST
    

    次のように置き換えます。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • USERNAME: ノードへの SSH アクセスが構成されているユーザー名。デフォルトでは、SSH は root 用に構成されていますが、ログイン ユーザーを設定した場合は、そのユーザー名を使用します。

    • SSH_KEY_PATH: SSH 秘密鍵ファイルのパス。

    • SERVICE_ACCOUNT_KEY_PATH: レジストリ イメージを pull する権限を持つサービス アカウント キーファイルのパス。デフォルトでは、これは anthos-baremetal-gcr サービス アカウントの JSON キーファイルです。

    • NODE_IP_ADDRESS_LIST: Node Agent をデプロイするノードの IP アドレスのカンマ区切りリスト。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_deploy-20250819-181751/nodeagent_deploy.log
    [2025-08-19 18:17:51+0000] INFO: Executing 'nodeagent deploy'...
    [2025-08-19 18:17:54+0000] -------------------- Deployment Plan --------------------
    [2025-08-19 18:17:54+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:17:54+0000]   SSH User:                  user
    [2025-08-19 18:17:54+0000]   SSH Key:                   SSH_KEY_PATH
    [2025-08-19 18:17:54+0000]   Concurrency:               25
    [2025-08-19 18:17:54+0000]   Generate Credentials:      false
    [2025-08-19 18:17:54+0000]   Deploy Credentials:        true
    [2025-08-19 18:17:54+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:17:54+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:17:54+0000]   Node Agent pull version:   1.33.0-gke.799
    [2025-08-19 18:17:54+0000]   Target Nodes Source:       nodes flag
    [2025-08-19 18:17:54+0000]   Nodes Port:                9192
    [2025-08-19 18:17:54+0000]   Target Nodes (3):          10.200.0.2, 10.200.0.3
    [2025-08-19 18:17:54+0000] ---------------------------------------------------------
    Proceed with deployment? [y/N]:
    

bmctl nodeagent deploy コマンド オプションの一覧については、bmctl コマンド リファレンスの nodeagent deploy をご覧ください。

Node エージェントを有効にする

enable コマンドは、クラスタ内のすべてのノードに Node Agent をデプロイした後、実行中の既存のクラスタ内で Node Agent モードを有効にします。このコマンドは、クラスタ内の Node Agent の認証情報を作成または更新します。

実行中の既存のクラスタで Node Agent を有効にする

既存のバージョン 1.33 以降のクラスタで Node Agent を有効にできます。

  • 既存のクラスタで Node Agent を有効にするには、次のコマンドを使用します。

    ./bmctl nodeagent enable \
        --kubeconfig KUBECONFIG \
        --cluster CLUSTER_NAME \
        --ensure-status=true
    

    次のように置き換えます。

    • KUBECONFIG: Node Agent を有効にするクラスタの kubeconfig ファイルのパス。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_enable-20250819-183058/nodeagent_enable.log
    [2025-08-19 18:30:58+0000] Enable Node Agent for cluster: demo-cluster
    [2025-08-19 18:31:00+0000] Update Node Agent credentials
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Server CA certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_cert.pem
    [2025-08-19 18:31:00+0000] Server CA private key path: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_key.pem
    [2025-08-19 18:31:00+0000] Client CA certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_cert.pem
    [2025-08-19 18:31:00+0000] Client CA private key path: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_key.pem
    [2025-08-19 18:31:00+0000] Client certificate path: bmctl-workspace/demo-cluster/nodeagent-creds/client_cert.pem
    [2025-08-19 18:31:00+0000] Client private key path: bmctl-workspace/demo-cluster/nodeagent-creds/client_key.pem
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Node Agent client credentials secret has been created/updated
    [2025-08-19 18:31:00+0000] Node Agent server CA secret has been created/updated
    [2025-08-19 18:31:00+0000] Node Agent client CA secret has been created/updated
    [2025-08-19 18:31:00+0000] Successfully created/updated Node Agent credentials secrets in namespace cluster-demo-cluster
    [2025-08-19 18:31:00+0000] Annotation 'baremetal.cluster.gke.io/node-agent-port' not found on cluster cluster-demo-cluster/demo-cluster, no removal needed.
    [2025-08-19 18:31:00+0000] Successfully enable Node Agent for cluster: demo-cluster
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 18:31:00+0000] --------------------- Total nodes: 3 ----------------------
    [2025-08-19 18:31:00+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1577
    [2025-08-19 18:31:00+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1578
    [2025-08-19 18:31:00+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1581
    [2025-08-19 18:31:00+0000] ----------------------------------------------------------
    [2025-08-19 18:31:00+0000] Verified Node Agent status on all nodes in cluster
    

新しいクラスタのインストール

Node Agent は、バージョン 1.33 以降のクラスタを作成するときに有効にできます。

新しいクラスタで Node Agent を有効にするには、次の操作を行います。

  1. 新しい管理クラスタの場合は、次の認証情報ファイルのパスを管理クラスタ構成ファイルの先頭セクションに追加します。

    nodeAgentServerCACertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_cert.pem
    nodeAgentServerCAPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/server_ca_key.pem
    nodeAgentClientCACertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_cert.pem
    nodeAgentClientCAPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/client_ca_key.pem
    nodeAgentClientCertificatePath: bmctl-workspace/demo-cluster/nodeagent-creds/client_cert.pem
    nodeAgentClientPrivateKeyPath: bmctl-workspace/demo-cluster/nodeagent-creds/client_key.pem
    
  2. クラスタ構成ファイルのクラスタ メタデータ セクションに、Node Agent の有効化アノテーションを含めます。

    kind: Cluster
    metadata:
      annotations:
        baremetal.cluster.gke.io/enable-node-agent: ""
    
  3. クラスタの作成に関する標準の手順に沿って操作します。

bmctl nodeagent enable コマンド オプションの一覧については、bmctl コマンド リファレンスの nodeagent enable をご覧ください。

認証情報のローテーション

rotate-credentials コマンドは、ノードとクラスタ内の両方で Node Agent の認証情報をローテーションします。これには、認証局(CA)をローテーションする機能が含まれます。--generate-ca-creds フラグは、CA を再生成し、新しく生成された CA を使用してサーバー(ノード)とクライアント(コントローラ)の両方の証明書に署名するようにコマンドに指示します。

  • 認証情報をローテーションし、新しい CA を再生成して使用するには、次のコマンドを使用します。

    bmctl nodeagent rotate-credentials \
        --kubeconfig KUBECONFIG \
        --generate-ca-creds true \
        --cluster CLUSTER_NAME \
        --ssh-user USERNAME \
        --ssh-key SSH_KEY_PATH
    

    次のように置き換えます。

    • KUBECONFIG: Node Agent を有効にするクラスタの kubeconfig ファイルのパス。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • USERNAME: ノードへの SSH アクセスが構成されているユーザー名。デフォルトでは、SSH は root 用に構成されていますが、ログイン ユーザーを設定した場合は、そのユーザー名を使用します。

    • SSH_KEY_PATH: SSH 秘密鍵ファイルのパス。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_rotate_credentials-20250819-184216/nodeagent_rotate_credentials.log
    [2025-08-19 18:42:16+0000] INFO: Executing 'nodeagent rotate-credentials'...
    [2025-08-19 18:42:18+0000] ------------------- Credentials Rotation  -------------------
    [2025-08-19 18:42:18+0000]   Target Cluster:            demo-cluster
    [2025-08-19 18:42:18+0000]   SSH User:                  root
    [2025-08-19 18:42:18+0000]   SSH Key:                   rootSSH
    [2025-08-19 18:42:18+0000]   Concurrency:               25
    [2025-08-19 18:42:18+0000]   Generate Credentials:      true
    [2025-08-19 18:42:18+0000]   Deploy Credentials:        true
    [2025-08-19 18:42:18+0000]   Server Cert Validity Days: 1825
    [2025-08-19 18:42:18+0000]   Verify SSH Host Keys:      true
    [2025-08-19 18:42:18+0000]   Target Nodes Source:       cluster CR
    [2025-08-19 18:42:18+0000]   Nodes Port:                9192
    [2025-08-19 18:42:18+0000]   Target Nodes (3):          10.200.0.2, 10.200.0.3, 10.200.0.4
    [2025-08-19 18:42:18+0000] ---------------------------------------------------------
    Proceed with credentials rotation? [y/N]: [2025-08-19 18:42:18+0000] INFO: Non-interactive mode enabled; automatically confirming.
    [2025-08-19 18:42:18+0000] INFO: Starting generate credentials (CAs and client credentials) phase...
    [2025-08-19 18:42:18+0000] Generating credentials for the cluster: demo-cluster, 2025-08-19T18:42:18Z
    [2025-08-19 18:42:18+0000] ------------ Credentials Options ------------
    [2025-08-19 18:42:18+0000] Cluster Name:           demo-cluster
    [2025-08-19 18:42:18+0000] Key Algorithm:          rsa
    [2025-08-19 18:42:18+0000] Key Length:             4096
    [2025-08-19 18:42:18+0000] CA Validity (days):     3650
    [2025-08-19 18:42:18+0000] Client Validity (days): 1825
    [2025-08-19 18:42:18+0000] Server CA CN:           Node Agent Server CA
    [2025-08-19 18:42:18+0000] Client CA CN:           Node Agent Client CA
    [2025-08-19 18:42:18+0000] Creds path:             bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:18+0000] --------------------------------------------
    [2025-08-19 18:42:18+0000] Generating credentials... OK
    Credential directory 'bmctl-workspace/demo-cluster/nodeagent-creds' already exists. Do you want to back it up and continue? (y/N): y
    [2025-08-19 18:42:27+0000] INFO: User confirmed.
    [2025-08-19 18:42:27+0000] Credentials backup to bmctl-workspace/demo-cluster/nodeagent-creds_backup_20250819_184227
    [2025-08-19 18:42:27+0000] Certificates have been created and stored in bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:27+0000] INFO: Attempting to load CAs from: bmctl-workspace/demo-cluster/nodeagent-creds
    [2025-08-19 18:42:27+0000] INFO: Server CA loaded successfully. Subject: CN=Node Agent Server CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:42:27+0000] INFO: Client CA loaded successfully. Subject: CN=Node Agent Client CA,O=gcd-SO,L=Sunnyvale,ST=California,C=US, Key Type: *rsa.PrivateKey
    [2025-08-19 18:42:27+0000] ===============================================
    [2025-08-19 18:42:34+0000] INFO: All host deployments finished.
    [2025-08-19 18:42:34+0000] INFO: --- Deployment Phase Completed Successfully ---
    [2025-08-19 18:42:34+0000]
    ===============================================
    --- Deployment Summary ---
      Host: 10.200.0.2, Status: SUCCESS
      Host: 10.200.0.3, Status: SUCCESS
      Host: 10.200.0.4, Status: SUCCESS
    -----------------------------------------------
    Total Nodes Attempted: 3 | SUCCESS: 3 | FAILED: 0
    ===============================================
    

bmctl nodeagent rotate-credentials コマンド オプションの一覧については、bmctl コマンド リファレンスの nodeagent rotate-credentials をご覧ください。

ステータスを確認

status コマンドは、ノード上の Node Agent の実行ステータスに関する情報を提供します。--nodes フラグを使用してターゲット ノードを直接指定するか、--cluster フラグを使用してクラスタ構成ファイルで指定するか、クラスタのカスタム リソースを参照して指定できます。

クラスタ構成ファイルまたは --nodes フラグからノードを取得すると、システムはローカル ファイル システムから認証情報を取得します。ノードソースがクラスタ カスタム リソースの場合、システムはクラスタから認証情報を取得します。

次の優先順位で Node エージェントのポートが決まります。

  1. --port フラグ
  2. kubeconfig ファイル
  3. クラスタ構成ファイル

Node Agent のステータスを確認する

--cluster フラグのみを使用すると、クラスタ構成ファイルで指定された内容に基づいてノード エージェントのステータスを確認できます。

  • クラスタ構成ファイルに基づいてノード エージェントのステータスを確認するには、次のコマンドを使用します。

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME
    

    CLUSTER_NAME は、確認するクラスタの名前に置き換えます。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-205707/nodeagent_status.log
    [2025-08-19 20:57:07+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 20:57:09+0000] ----------------------------------------------------------
    [2025-08-19 20:57:09+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 20:57:09+0000] Target Nodes Source: cluster YAML
    [2025-08-19 20:57:09+0000] --------------------- Total nodes: 4 ----------------------
    [2025-08-19 20:57:09+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1175
    [2025-08-19 20:57:09+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1174
    [2025-08-19 20:57:09+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1176
    [2025-08-19 20:57:09+0000] node: worker-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1179
    [2025-08-19 20:57:09+0000] ----------------------------------------------------------
    [2025-08-19 20:57:09+0000] Verified Node Agent status on all nodes in cluster
    

クラスタからノード エージェントのステータスを確認する

--cluster フラグと --kubeconfig フラグを組み合わせて使用すると、クラスタ カスタム リソースに基づいて Node Agent のステータスを確認できます。

  • Cluster カスタム リソースに基づいて Node エージェントのステータスを確認するには、次のコマンドを使用します。

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME \
        --kubeconfig KUBECONFIG
    

    次のように置き換えます。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • KUBECONFIG: Node Agent を有効にするクラスタの kubeconfig ファイルのパス。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-205712/nodeagent_status.log
    [2025-08-19 20:57:12+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 20:57:14+0000] ----------------------------------------------------------
    [2025-08-19 20:57:14+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 20:57:14+0000] Target Nodes Source: cluster CR
    [2025-08-19 20:57:14+0000] --------------------- Total nodes: 3 ----------------------
    [2025-08-19 20:57:14+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1180
    [2025-08-19 20:57:14+0000] node: control-1--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1179
    [2025-08-19 20:57:14+0000] node: control-2--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1180
    [2025-08-19 20:57:14+0000] ----------------------------------------------------------
    [2025-08-19 20:57:14+0000] Verified Node Agent status on all nodes in cluster
    

ノードからノード エージェントのステータスを確認する

--cluster フラグと --nodes フラグを組み合わせて使用すると、特定のクラスタノードの Node Agent のステータスを確認できます。

  • 特定のノードの Node Agent のステータスを確認するには、次のコマンドを使用します。

    ./bmctl nodeagent status \
        --cluster CLUSTER_NAME \
        --nodes NODE_IP_ADDRESS_LIST
    

    次のように置き換えます。

    • CLUSTER_NAME: Node Agent をデプロイするノードがあるクラスタの名前。

    • NODE_IP_ADDRESS_LIST: Node Agent をデプロイするノードの IP アドレスのカンマ区切りリスト。

    コマンド出力は次の例のようになります。

    Please check the logs at bmctl-workspace/demo-cluster/log/nodeagent_status-20250819-210050/nodeagent_status.log
    [2025-08-19 21:00:50+0000] Check Node Agent for cluster: demo-cluster
    [2025-08-19 21:00:53+0000] ----------------------------------------------------------
    [2025-08-19 21:00:53+0000] Verifying Node Agent status on all nodes...
    [2025-08-19 21:00:53+0000] Target Nodes Source: nodes flag
    [2025-08-19 21:00:53+0000] --------------------- Total nodes: 1 ----------------------
    [2025-08-19 21:00:53+0000] node: control-0--893f0567cb79efc-9b9ec55816170dcf.lab.anthos, version: 1.33.0-gke.799, OS: linux, uptime (seconds): 1399
    [2025-08-19 21:00:53+0000] ----------------------------------------------------------
    [2025-08-19 21:00:53+0000] Verified Node Agent status on all nodes in cluster
    

bmctl nodeagent status コマンド オプションの完全なリストについては、bmctl コマンド リファレンスの nodeagent status をご覧ください。

SSH ユーザー権限

root 以外のユーザーは bmctl nodeagent コマンドを実行できます。これには、ユーザーがパスワードなしの sudo フルアクセス権限を持っているか、パスワードなしの sudo 明示的許可リストを持っている必要があります。

Node エージェントのパスワードなしの sudo 許可リストには、次の権限があります。

# Permission to create the necessary folders and set permissions.
/bin/mkdir -p /etc/nodeagentd
/bin/chmod 0755 /etc/nodeagentd
/bin/mkdir -p /usr/local/bin
/bin/chmod 0755 /usr/local/bin
/bin/mkdir -p /etc/systemd/system
/bin/chmod 0755 /etc/systemd/system

# Permission to place the main application executable and link it.
/bin/rm -f /usr/local/bin/nodeagentd-*
/bin/touch /usr/local/bin/nodeagentd-*
/bin/cp -f /home/deployer/.deploy_tmp_*/* /usr/local/bin/nodeagentd-*
/bin/chmod 0755 /usr/local/bin/nodeagentd-*
/bin/rm -f /usr/local/bin/nodeagentd
/bin/ln -s /usr/local/bin/nodeagentd-* /usr/local/bin/nodeagentd

# Permission to place configuration files in /etc/nodeagentd and set permissions.
/bin/rm -f /etc/nodeagentd/*
/bin/touch /etc/nodeagentd/*
/bin/cp -f /home/deployer/.deploy_tmp_*/* /etc/nodeagentd/*
/bin/chmod 0600 /etc/nodeagentd/*
/bin/chmod 0644 /etc/nodeagentd/*

# Permission to place the systemd unit file.
/bin/rm -f /etc/systemd/system/nodeagentd.service
/bin/touch /etc/systemd/system/nodeagentd.service
/bin/cp -f /home/deployer/.deploy_tmp_*/* /etc/systemd/system/nodeagentd.service
/bin/chmod 0644 /etc/systemd/system/nodeagentd.service

# Permission to interact with systemd service.
/bin/systemctl daemon-reload
/bin/systemctl stop nodeagentd
/bin/systemctl start nodeagentd
/bin/systemctl enable --now nodeagentd

# Permission to remove the temporary files used for the deployment.
/bin/rm -f /home/deployer/.deploy_tmp_*/*

SSH ホストキーの検証

すべてのノードが管理ワークステーションの known_hosts ファイルに追加されていることを確認します。それ以外の場合は、--enforce-host-key-verify=false フラグを使用して、デプロイ中のホストキーの検証(nodeagent deploy)と認証情報のローテーション(nodeagent rotate-credentials)を無効にします。

Node エージェントのポートをカスタマイズする

Node Agent では、ポートをカスタマイズできます。このカスタムポートは、デプロイ時に --port フラグを使用して指定します。これにより、設定が各ノードの Node Agent 構成に伝播されます。カスタマイズされたポートは、次のメソッドで説明するように、クライアントサイドの構成と一致している必要があります。

既存のクラスタの場合

既存の実行中のクラスタを更新するには、--port フラグを使用して新しいカスタムポートを指定します。この設定はクライアント(コントローラ)に伝播します。

新しいクラスタの場合

新しいクラスタを作成するときに、次のアノテーションをクラスタ構成に追加して、Node Agent のカスタムポートを指定します。

kind: Cluster
metadata:
  annotations:
    baremetal.cluster.gke.io/node-agent-port: "10086"

パフォーマンス

デプロイと有効化は 1 分以内に完了します。認証情報のローテーションのランタイムは、標準のデプロイと同程度か、それよりも高速です。