查看及維護 VM 中繼資料

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

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

事前準備

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

取得 kubeconfig 檔案路徑

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

  1. 找出 Management API 伺服器名稱,或詢問平台管理員 (PA) 伺服器名稱。

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

  3. 請使用路徑取代這些操作說明中的 MANAGEMENT_API_SERVER{"</var>"}}

要求權限和存取權

如要執行本頁列出的工作,您必須具備專案虛擬機器管理員角色。請按照步驟驗證,或請專案 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"