本文說明如何在 Google Distributed Cloud (GDC) 實體隔離方案中,查看及維護虛擬機器 (VM) 執行個體中繼資料。
每個 VM 都會將中繼資料儲存於中繼資料伺服器,並以鍵/值組合 (KVP) 的形式呈現。中繼資料 KVP 包含描述性屬性、自訂設定值,以及有助於識別 VM 的資訊,例如伺服器名稱。無論 VM 正在執行或已停止,您都可以新增及移除中繼資料、從 VM 外部或內部查詢中繼資料,以及使用中繼資料在系統之間傳遞資訊。
本文件適用於平台管理員或應用程式操作員群組中的開發人員,他們會在 Distributed Cloud 環境中查看及維護執行個體的 VM 中繼資料。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。
事前準備
如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。Distributed Cloud 的所有指令都使用 gdcloud 或 kubectl CLI,且需要作業系統 (OS) 環境。
取得 kubeconfig 檔案路徑
如要對 Management API 伺服器執行指令,請確認您具備下列資源:
如果您沒有 Management API 伺服器的 kubeconfig 檔案,請登入並產生該檔案。
請使用 Management API 伺服器的 kubeconfig 檔案路徑,取代這些操作說明中的
MANAGEMENT_API_SERVER。
要求 IAM 角色
如要使用 gdcloud CLI 和 API 新增、移除及維護 VM 執行個體的中繼資料,請聯絡 IAM 專案管理員,要求授予下列專案角色:
虛擬機器專案管理員 (
project-vm-admin):在專案命名空間中建立、列出、修改及刪除 VM。專案檢視者 (
project-viewer):查看專案命名空間中的所有資源。
所有 VM 角色都必須繫結至 VM 所在專案的命名空間。按照步驟驗證存取權。
新增或移除中繼資料
本節說明如何新增及移除現有 VM 執行個體的中繼資料。
您可以使用中繼資料,儲存要新增至 VM 的任意鍵/值組合。舉例來說,您可能想新增及管理自訂中繼資料,以識別不同的環境,例如 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替換為組織後置字串。舉例來說,如果組織控制台網址為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:組織後置字串。舉例來說,如果機構控制台網址為https://console.example-org.com,則ORG_SUFFIX為example-org.com。VM_NAME:VM 執行個體的名稱。PROJECT_NAME:VM 所在專案的名稱。這個值為選用。STS_TOKEN:從 gdcloud CLI 產生的STS權杖。
以下範例顯示完整的
curl指令,可將中繼資料新增至 VM 執行個體: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替換為組織後置字串。舉例來說,如果組織控制台網址為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:組織後置字串。舉例來說,如果機構控制台網址為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:組織後置字串。舉例來說,如果組織控制台網址為https://console.example-org.com,則ORG_SUFFIX為example-org.comVM_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 指令,並將適用的中繼資料鍵附加至中繼資料網址。
查詢單一 KVP
在 VM 中查詢單一 KVP:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" \
-H "Metadata-Flavor: Google"
將 KEY 替換為要查詢的中繼資料組合鍵。
查詢所有含值的鍵/值組合
從 VM 內查詢所有 KVP:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" \
-H "Metadata-Flavor: Google"
查詢所有沒有值的中繼資料鍵
從 VM 內查詢所有沒有值的中繼資料鍵:
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" \
-H "Metadata-Flavor: Google"