每部虛擬機器 (VM) 都會將中繼資料儲存在中繼資料伺服器上。 您可以在 Google Distributed Cloud (GDC) 離線裝置 VM 上,以鍵/值組合 (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>"}}
。
要求權限和存取權
如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中指派專案 VirtualMachine 管理員 (project-vm-admin
) 角色給您。
如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員同時指派專案 VirtualMachine 管理員角色和專案檢視者 (project-viewer
) 角色。
新增或移除中繼資料
本節說明如何從現有 VM 執行個體新增及移除中繼資料。您可以使用中繼資料儲存要新增至 VM 的任意鍵/值組合。舉例來說,您可能想新增及管理自己的自訂中繼資料,以識別不同環境,例如 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
替換為機構後置字串。 舉例來說,如果機構控制台網址為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
:機構後置字元。舉例來說,如果機構控制台網址為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
替換為機構後置字串。 舉例來說,如果機構控制台網址為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
:機構後置字元。舉例來說,如果機構控制台網址為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
:機構後置字元。舉例來說,如果機構控制台網址為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
指令,並將適用的中繼資料鍵附加至中繼資料網址。
查詢單一 KVP
從 VM 內查詢單一 KVP:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" -H "Metadata-Flavor: Google"
將 KEY
替換為要查詢的中繼資料組合的鍵。
查詢所有含值的 KVP 對
使用鍵值從 VM 內查詢所有 KVP 組合:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" -H "Metadata-Flavor: Google"
查詢所有沒有值的 metadata-key
從 VM 內部查詢所有中繼資料鍵,但不含鍵值:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" -H "Metadata-Flavor: Google"