すべての仮想マシン(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 サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。
まだ Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
これらの手順では、Management API サーバーの kubeconfig ファイルのパスを使用して
MANAGEMENT_API_SERVERを置き換えます。
権限とアクセス権をリクエストする
gdcloud CLI と API を使用して VM インスタンスのメタデータを追加、削除、維持するには、VM が存在するプロジェクトの Namespace で次の IAM ロールを付与するようプロジェクト IAM 管理者に依頼してください。
プロジェクト VirtualMachine 管理者(
project-vm-admin): プロジェクト Namespace の VM を管理します。プロジェクト閲覧者(
project-viewer): プロジェクト Namespace 内のすべてのリソースに対する読み取り専用アクセス権があります。
手順に沿ってアクセスを確認します。
メタデータを追加または削除する
このセクションでは、既存の VM インスタンスのメタデータを追加および削除する方法について説明します。
メタデータを使用すると、VM に追加する任意の Key-Value ペアを保存できます。たとえば、test や production などのさまざまな環境を識別するために、独自のカスタム メタデータを追加して管理することが必要になる場合があります。
メタデータを追加
gdcloud
特定の VM インスタンスにメタデータを追加します。コマンドに
--metadataフラグまたは--metadata-from-fileフラグのいずれかを含める必要があります。ユースケースで必要な場合は、同じコマンドに両方のフラグを追加することもできます。gdcloud compute instances add-metadata VM_NAME [--project=PROJECT_NAME] [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]] [--metadata-from-file=KEY=LOCAL_FILE_PATH,]次のように置き換えます。
VM_NAME: VM インスタンスの名前。PROJECT_NAME: VM が存在するプロジェクトの名前。この値はオプションです。KEY: メタデータ ペアのキー。KEY_VALUE: メタデータ ペアの値。LOCAL_FILE_PATH: ローカル ファイルのメタデータ ペアの値。
API
API でメタデータを追加するには、STS トークンを使用する必要があります。
gdcloud CLI を使用して
STSトークンを生成します。gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"ORG_SUFFIXは、組織の接尾辞に置き換えます。たとえば、組織コンソールの URL がhttps://console.example-org.comの場合、ORG_SUFFIXはexample-org.comになります。出力は次のようになります。
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ特定の VM インスタンスにメタデータを追加します。
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/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_SUFFIXはexample-org.comになります。VM_NAME: VM インスタンスの名前。PROJECT_NAME: VM が存在するプロジェクトの名前。この値はオプションです。STS_TOKEN: gdcloud CLI から生成されたSTSトークン。
次のサンプルは、VM インスタンスにメタデータを追加する完全な
curlコマンドを示しています。curl -X POST "https://metadata.org-1.zone1.google.gdch.test/virtual-machines/metadata/v1/projects/username-test/vm/lancer-vm" \ -H "Authorization: Bearer $STS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"metadata": {"items": [{"key": "test-key1", "value": "test-value"}]}}'
メタデータを削除します
gdcloud
特定の VM インスタンスからメタデータを削除します。すべてのメタデータ エントリを削除する場合は、
--allフラグを使用します。コマンドで--allフラグまたは--keysフラグのいずれかを使用する必要があります。gdcloud compute instances remove-metadata VM_NAME [--project=PROJECT_NAME] [--keys=KEY,[KEY,...]] [--all]次のように置き換えます。
VM_NAME: VM インスタンスの名前。PROJECT_NAME: VM が存在するプロジェクトの名前。この値はオプションです。KEY: メタデータ ペアのキー文字列。
API
API を使用してメタデータを削除するには、STS トークンを使用する必要があります。
gdcloud CLI を使用して
STSトークンを生成します。gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"ORG_SUFFIXは、組織の接尾辞に置き換えます。たとえば、組織コンソールの URL がhttps://console.example-org.comの場合、ORG_SUFFIXはexample-org.comです。出力は次のようになります。
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ特定の VM インスタンスからメタデータを削除します。
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json" \ -d "{"metadata": {}}"次のように置き換えます。
ORG_SUFFIX: 組織の接尾辞。たとえば、組織のコンソール URL がhttps://console.example-org.comの場合、ORG_SUFFIXはexample-org.comになります。VM_NAME: VM インスタンスの名前。PROJECT_NAME: VM が存在するプロジェクトの名前。STS_TOKEN: gdcloud CLI から生成されたSTSトークン。
メタデータをクエリする
gdcloud
すべての VM インスタンスのメタデータを一覧表示して、メタデータの詳細を表示します。
gdcloud compute instances describe VM_NAME [--project=PROJECT_NAME]次のように置き換えます。
VM_NAME: VM インスタンスの名前。PROJECT_NAME: VM が存在するプロジェクトの名前。この値はオプションです。
出力は次のようになります。
# … metadata: items: - key: Key-1 value: val12 - key: key2 value: lksdjfhk-user1
API
gdcloud CLI を使用して
STSトークンを生成します。gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"ORG_SUFFIXは、組織の接尾辞に置き換えます。出力は次のようになります。
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQすべての VM インスタンスのメタデータを一覧表示して、メタデータの詳細を表示します。
curl "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT_NAME/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json"次のように置き換えます。
ORG_SUFFIX: 組織の接尾辞。たとえば、組織コンソールの URL がhttps://console.example-org.comの場合、ORG_SUFFIXはexample-org.comになります。VM_NAME: VM インスタンスの名前。PROJECT_NAME: 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"