すべての仮想マシン(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
を置き換えます。
権限とアクセス権をリクエストする
このページに記載されているタスクを行うには、プロジェクトの 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"