查看及維護 VM 中繼資料

每部虛擬機器 (VM) 都會將中繼資料儲存在中繼資料伺服器上。 您可以在 Google Distributed Cloud (GDC) 氣隙 VM 上,以鍵/值組合 (KVP) 形式新增、移除及查看中繼資料。

您可以使用中繼資料 KVP 儲存有助於識別 VM 的資訊,例如伺服器名稱。您可以在 VM 內外存取中繼資料,並使用中繼資料在不同系統之間傳遞資訊。

事前準備

如要使用 gdcloud 指令列介面 (CLI) 指令,請務必下載、安裝及設定 gdcloud CLI。Distributed Cloud 的所有指令都使用 gdcloudkubectl CLI,且需要作業系統 (OS) 環境。

取得 kubeconfig 檔案路徑

如要對 Management API 伺服器執行指令,請確認您具備下列資源:

  1. 登入並產生 Management API 伺服器的 kubeconfig 檔案 (如果沒有)。

  2. 使用 Management API 伺服器的 kubeconfig 檔案路徑,取代這些操作說明中的 MANAGEMENT_API_SERVER

要求權限和存取權

如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中指派專案 VirtualMachine 管理員 (project-vm-admin) 角色給您。

如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員同時指派專案 VirtualMachine 管理員角色和專案檢視者 (project-viewer) 角色。

新增或移除中繼資料

本節說明如何從現有 VM 執行個體新增及移除中繼資料。您可以使用中繼資料儲存要新增至 VM 的任意鍵/值組合。舉例來說,您可能想新增及管理自己的自訂中繼資料,以識別不同環境,例如 testproduction

新增中繼資料

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 權杖。

  1. 使用 gdcloud CLI 產生 STS 權杖:

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX 替換為機構後置字串。 舉例來說,如果機構控制台網址為 https://console.example-org.com,則 ORG_SUFFIXexample-org.com

    輸出結果會與下列內容相似:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. 將中繼資料新增至特定 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_SUFFIXexample-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 權杖。

  1. 使用 gdcloud CLI 產生 STS 權杖:

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX 替換為機構後置字串。 舉例來說,如果機構控制台網址為 https://console.example-org.com,則 ORG_SUFFIXexample-org.com

    輸出結果會與下列內容相似:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. 從特定 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_SUFFIXexample-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

  1. 使用 gdcloud CLI 產生 STS 權杖:

    gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
    

    ORG_SUFFIX 替換為機構後置字串。

    輸出結果會與下列內容相似:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. 列出所有 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_SUFFIXexample-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"