VM メタデータの表示と維持

すべての仮想マシン(VM)は、メタデータ サーバーにメタデータを保存します。Google Distributed Cloud(GDC)のエアギャップ VM のメタデータは、Key-Value ペア(KVP)として追加、削除、表示できます。

メタデータ KVP を使用して、サーバー名など、VM の識別に役立つ情報を保存できます。VM の外部と内部からメタデータにアクセスし、メタデータを使用して異なるシステム間で情報を渡すことができます。

始める前に

gdcloud コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud CLI をダウンロード、インストール、構成していることを確認してください。Distributed Cloud のすべてのコマンドは gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境が必要です。

kubeconfig ファイルのパスを取得する

Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。

  1. Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。

  2. これらの手順では、Management API サーバーの kubeconfig ファイルのパスを使用して MANAGEMENT_API_SERVER を置き換えます。

権限とアクセス権をリクエストする

このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者のロールが必要です。次の手順に沿って、確認するか、プロジェクト IAM 管理者に VM が存在するプロジェクトの Namespace でプロジェクト VirtualMachine 管理者(project-vm-admin)ロールを割り当ててもらいます。

GDC コンソールまたは gdcloud CLI を使用する VM オペレーションの場合は、プロジェクト IAM 管理者に、プロジェクトの VirtualMachine 管理者ロールとプロジェクト閲覧者(project-viewer)ロールの両方を割り当てるよう依頼します。

メタデータを追加または削除する

このセクションでは、既存の VM インスタンスのメタデータを追加および削除する方法について説明します。メタデータを使用すると、VM に追加する任意の Key-Value ペアを保存できます。たとえば、testproduction などの異なる環境を識別するために、独自のカスタム メタデータを追加して管理できます。

メタデータを追加

gdcloud

  • 特定の VM インスタンスにメタデータを追加します。コマンドに --metadata フラグまたは --metadata-from-file フラグのいずれかを含める必要があります。ユースケースで必要な場合は、同じコマンドで両方のフラグを追加することもできます。

    gdcloud compute instances add-metadata VM_NAME
        [--project=PROJECT]
        [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]]
        [--metadata-from-file=KEY=LOCAL_FILE_PATH,]
    

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

    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。この値はオプションです。
    • KEY: メタデータ ペアのキー。
    • KEY_VALUE: メタデータ ペアの値。
    • LOCAL_FILE_PATH: ローカル ファイルのメタデータ ペアの値。

API

API でメタデータを追加するには、STS トークンを使用する必要があります。

  1. gdcloud CLI を使用して STS トークンを生成します。

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX は、組織の接尾辞に置き換えます。たとえば、組織コンソールの URL が https://console.example-org.com の場合、ORG_SUFFIXexample-org.com です。

    出力は次のようになります。

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. 特定の VM インスタンスにメタデータを追加します。

    curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \
    -H "Authorization: Bearer STS_TOKEN \
    -H "Content-Type: application/json" \
    -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
    

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

    • ORG_SUFFIX: 組織の接尾辞。たとえば、組織のコンソール URL が https://console.example-org.com の場合、ORG_SUFFIXexample-org.com になります。
    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。この値はオプションです。
    • STS_TOKEN: gdcloud CLI から生成された STS トークン。

メタデータを削除します

gdcloud

  • 特定の VM インスタンスからメタデータを削除します。すべてのメタデータ エントリを削除する場合は、--all フラグを使用します。コマンドで --all フラグまたは --keys フラグのいずれかを使用する必要があります。

    gdcloud compute instances remove-metadata VM_NAME
        [--project=PROJECT]
        [--keys=KEY,[KEY,...]]
        [--all]
    

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

    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。この値はオプションです。
    • KEY: メタデータ ペアのキー文字列。

API

API でメタデータを削除するには、STS トークンを使用する必要があります。

  1. gdcloud CLI を使用して STS トークンを生成します。

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX は、組織の接尾辞に置き換えます。たとえば、組織コンソールの URL が https://console.example-org.com の場合、ORG_SUFFIXexample-org.com です。

    出力は次のようになります。

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. 特定の VM インスタンスからメタデータを削除します。

    curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \
    -H "Authorization: Bearer STS_TOKEN" \
    -H "Content-Type: application/json" \
    -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
    

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

    • ORG_SUFFIX: 組織の接尾辞。たとえば、組織のコンソール URL が https://console.example-org.com の場合、ORG_SUFFIXexample-org.com になります。
    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。
    • STS_TOKEN: gdcloud CLI から生成された STS トークン。

メタデータをクエリする

gdcloud

  • すべての VM インスタンスのメタデータを一覧表示して、メタデータの詳細を表示します。

    gdcloud compute instances describe VM_NAME
        [--project=PROJECT]
    

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

    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。この値はオプションです。

    出力は次のようになります。

    ...
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

API

  1. gdcloud CLI を使用して STS トークンを生成します。

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX は、組織の接尾辞に置き換えます。

    出力は次のようになります。

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. すべての VM インスタンスのメタデータを一覧表示して、メタデータの詳細を表示します。

    curl "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \
    -H "Authorization: Bearer STS_TOKEN" \
    -H "Content-Type: application/json"
    

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

    • ORG_SUFFIX: 組織の接尾辞。たとえば、組織コンソールの URL が https://console.example-org.com の場合、ORG_SUFFIXexample-org.com になります。
    • VM_NAME: VM インスタンスの名前。
    • PROJECT: VM が存在するプロジェクトの名前。この値はオプションです。
    • STS_TOKEN: gdcloud CLI から生成された STS トークン。

    出力は次のようになります。

    ...
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

VM 内からメタデータにクエリを実行する

メタデータ サーバーに接続しなくても、VM 内から VM メタデータに対してクエリを実行できます。これを行うには、curl コマンドを使用し、該当するメタデータキーをメタデータ URL に追加します。

単一の KVP をクエリする

VM 内から単一の KVP をクエリします。

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" -H "Metadata-Flavor: Google"

KEY は、クエリするメタデータ ペアのキーに置き換えます。

値を含むすべての KVP ペアをクエリする

Key-Value を使用して VM 内からすべての KVP ペアをクエリします。

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" -H "Metadata-Flavor: Google"

値のないすべてのメタデータキーをクエリする

Key-Value のない VM 内からすべてのメタデータキーをクエリします。

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" -H "Metadata-Flavor: Google"