VM-Metadaten ansehen und verwalten

Die Metadaten jeder virtuellen Maschine (VM) werden auf einem Metadatenserver gespeichert. Sie können Metadaten in Ihren Google Distributed Cloud-VMs (GDC) ohne Internetverbindung als Schlüssel/Wert-Paare (KVPs) hinzufügen, entfernen und ansehen.

Sie können die Schlüssel/Wert-Paare für Metadaten verwenden, um Informationen zu speichern, mit denen Sie Ihre VM identifizieren können, z. B. einen Servernamen. Sie können von außerhalb und innerhalb der VM auf Metadaten zugreifen und sie verwenden, um Informationen zwischen verschiedenen Systemen zu übergeben.

Hinweise

Wenn Sie Befehle der gdcloud-Befehlszeile (Command-Line Interface, CLI) verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben. Für alle Befehle für Distributed Cloud wird die CLI gdcloud oder kubectl verwendet und es ist eine Betriebssystemumgebung erforderlich.

Pfad der kubeconfig-Datei abrufen

Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.

  2. Verwenden Sie den Pfad zur kubeconfig-Datei des Management API-Servers, um MANAGEMENT_API_SERVER in dieser Anleitung zu ersetzen.

Berechtigungen und Zugriff anfordern

Wenn Sie mit der gcloud CLI und der API Metadaten für VM-Instanzen hinzufügen, entfernen und verwalten möchten, bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die folgenden IAM-Rollen im Namespace des Projekts zuzuweisen, in dem sich die VM befindet:

  • Project VirtualMachine Admin (project-vm-admin): Verwaltet VMs im Projekt-Namespace.

  • Projektbetrachter (project-viewer): Hat schreibgeschützten Zugriff auf alle Ressourcen in einem Projekt-Namespace.

Folgen Sie der Anleitung, um Ihren Zugriff zu bestätigen.

Metadaten hinzufügen oder entfernen

In diesem Abschnitt wird beschrieben, wie Sie vorhandenen VM-Instanzen Metadaten hinzufügen und daraus entfernen.

Sie können Metadaten verwenden, um beliebige Schlüssel/Wert-Paare zu speichern, die Sie Ihren VMs hinzufügen möchten. Sie können beispielsweise eigene benutzerdefinierte Metadaten hinzufügen und verwalten, um verschiedene Umgebungen wie test und production zu identifizieren.

Metadaten hinzufügen

gdcloud

  • Metadaten zu einer bestimmten VM-Instanz hinzufügen. Sie müssen entweder das Flag --metadata oder das Flag --metadata-from-file in den Befehl einfügen. Bei Bedarf können Sie auch beide Flags im selben Befehl hinzufügen:

    gdcloud compute instances add-metadata VM_NAME
        [--project=PROJECT_NAME]
        [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]]
        [--metadata-from-file=KEY=LOCAL_FILE_PATH,]
    

    Ersetzen Sie Folgendes:

    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet. Dieser Wert ist optional.
    • KEY: der Schlüssel für das Metadatenpaar.
    • KEY_VALUE: der Wert für das Metadatenpaar.
    • LOCAL_FILE_PATH: Der Wert des Metadatenpaars aus einer lokalen Datei.

API

Wenn Sie Metadaten mit der API hinzufügen möchten, müssen Sie ein STS-Token verwenden.

  1. Verwenden Sie die gcloud CLI, um ein STS-Token zu generieren:

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

    Ersetzen Sie ORG_SUFFIX durch das Organisationssuffix. Wenn die URL der Organisationskonsole beispielsweise https://console.example-org.com lautet, ist ORG_SUFFIX gleich example-org.com.

    Die Ausgabe sieht etwa so aus:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. Metadaten einer bestimmten VM-Instanz hinzufügen:

    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"}]}}"
    

    Ersetzen Sie Folgendes:

    • ORG_SUFFIX: das Organisationssuffix. Wenn die URL der Organisationskonsole beispielsweise https://console.example-org.com lautet, ist ORG_SUFFIX example-org.com.
    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet. Dieser Wert ist optional.
    • STS_TOKEN: das STS-Token, das über die gcloud CLI generiert wurde.

    Das folgende Beispiel zeigt einen vollständigen curl-Befehl zum Hinzufügen von Metadaten zu einer VM-Instanz:

    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"}]}}'
    

Metadaten entfernen

gdcloud

  • Metadaten aus einer bestimmten VM-Instanz entfernen Wenn Sie alle Metadateneinträge entfernen möchten, verwenden Sie das Flag --all. Sie müssen entweder das Flag --all oder das Flag --keys in Ihrem Befehl verwenden:

    gdcloud compute instances remove-metadata VM_NAME
        [--project=PROJECT_NAME]
        [--keys=KEY,[KEY,...]]
        [--all]
    

    Ersetzen Sie Folgendes:

    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet. Dieser Wert ist optional.
    • KEY: der Schlüsselstring für das Metadatenpaar.

API

Wenn Sie Metadaten mit der API entfernen möchten, müssen Sie ein STS-Token verwenden.

  1. Verwenden Sie die gcloud CLI, um ein STS-Token zu generieren:

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

    Ersetzen Sie ORG_SUFFIX durch das Organisationssuffix. Wenn die URL der Organisationskonsole beispielsweise https://console.example-org.com lautet, ist ORG_SUFFIX example-org.com.

    Die Ausgabe sieht etwa so aus:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. Metadaten aus einer bestimmten VM-Instanz entfernen:

    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": {}}"
    

    Ersetzen Sie Folgendes:

    • ORG_SUFFIX: das Organisationssuffix. Wenn die URL der Organisationskonsole beispielsweise https://console.example-org.com lautet, ist ORG_SUFFIX example-org.com.
    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet.
    • STS_TOKEN: das STS-Token, das über die gcloud CLI generiert wurde.

Metadaten abfragen

gdcloud

  • So listen Sie alle VM-Instanzmetadaten auf, um Metadatendetails zu sehen:

    gdcloud compute instances describe VM_NAME
        [--project=PROJECT_NAME]
    

    Ersetzen Sie Folgendes:

    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet. Dieser Wert ist optional.

    Die Ausgabe sieht etwa so aus:

    # …
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

API

  1. Verwenden Sie die gcloud CLI, um ein STS-Token zu generieren:

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

    Ersetzen Sie ORG_SUFFIX durch das Organisationssuffix.

    Die Ausgabe sieht etwa so aus:

    STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
    
  2. So listen Sie alle VM-Instanzmetadaten auf, um Metadatendetails zu sehen:

    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"
    

    Ersetzen Sie Folgendes:

    • ORG_SUFFIX: das Organisationssuffix. Wenn die URL der Organisationskonsole beispielsweise https://console.example-org.com lautet, ist ORG_SUFFIX example-org.com.
    • VM_NAME ist der Name der VM-Instanz.
    • PROJECT_NAME: Der Name des Projekts, in dem sich die VM befindet. Dieser Wert ist optional.
    • STS_TOKEN: das STS-Token, das über die gcloud CLI generiert wurde.

    Die Ausgabe sieht etwa so aus:

    # …
    metadata:
      items:
      - key: Key-1
        value: val12
      - key: key2
        value:
          lksdjfhk-user1
    

Metadaten von einer VM aus abfragen

Sie können VM-Metadaten innerhalb der VM abfragen, ohne eine Verbindung zum Metadatenserver herstellen zu müssen. Verwenden Sie dazu den Befehl curl und hängen Sie den entsprechenden Metadatenschlüssel an die Metadaten-URL an.

Einzelnes Schlüssel-Wert-Paar abfragen

So fragen Sie ein einzelnes KVP aus einer VM heraus ab:

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" \
  -H "Metadata-Flavor: Google"

Ersetzen Sie KEY durch den Schlüssel für das Metadatenpaar, das Sie abfragen möchten.

Alle Schlüssel/Wert-Paare mit Werten abfragen

Alle Schlüssel/Wert-Paare aus einer VM mit Schlüssel/Werten abfragen:

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" \
  -H "Metadata-Flavor: Google"

Alle Metadatenschlüssel ohne Werte abfragen

Alle Metadatenschlüssel ohne Schlüssel/Wert-Paare aus einer VM abfragen:

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" \
  -H "Metadata-Flavor: Google"