すべての仮想マシン(VM)は、メタデータ サーバーにメタデータを保存します。Google Distributed Cloud(GDC)のエアギャップ アプライアンス VM のメタデータは、Key-Value ペア(KVP)として追加、削除、表示できます。
メタデータ KVP を使用して、サーバー名など、VM の識別に役立つ情報を保存できます。VM の外部と内部からメタデータにアクセスし、メタデータを使用して異なるシステム間で情報を渡すことができます。
始める前に
gdcloud コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud CLI をダウンロード、インストール、構成していることを確認してください。GDC エアギャップ アプライアンスのすべてのコマンドは gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境が必要です。
kubeconfig ファイルのパスを取得する
Management API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。
Management API サーバー名を確認するか、プラットフォーム管理者(PA)にサーバー名を確認します。
Management API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
この手順では、パスを使用して
MANAGEMENT_API_SERVER{"</var>"}}を置き換えます。
権限とアクセス権をリクエストする
このページに記載されているタスクを行うには、プロジェクトの VirtualMachine 管理者のロールが必要です。次の手順に沿って、確認するか、プロジェクト IAM 管理者に VM が存在するプロジェクトの Namespace でプロジェクト VirtualMachine 管理者(project-vm-admin)ロールを割り当ててもらいます。
GDC コンソールまたは gdcloud CLI を使用する VM オペレーションの場合は、プロジェクト IAM 管理者に、プロジェクトの VirtualMachine 管理者ロールとプロジェクト閲覧者(project-viewer)ロールの両方を割り当てるよう依頼します。
メタデータを追加または削除する
このセクションでは、既存の VM インスタンスのメタデータを追加および削除する方法について説明します。メタデータを使用すると、VM に追加する任意の Key-Value ペアを保存できます。たとえば、test や production などの異なる環境を識別するために、独自のカスタム メタデータを追加して管理できます。
メタデータを追加
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 トークンを使用する必要があります。
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/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: 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 トークンを使用する必要があります。
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/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: 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
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/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: 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"