Ressourcen mit Labels versehen

Mit Labels können Ressourcen, die zusammengehören oder miteinander verknüpft sind, problemlos gruppiert werden. Es ist z. B. üblich, Ressourcen, die für Produktion, Staging oder Entwicklung bestimmt sind, separat mit Labels zu versehen, damit bei Bedarf leicht nach Ressourcen gesucht werden kann, die zu einer bestimmten Entwicklungsphase gehören. Ihre Labels heißen möglicherweise vmrole:webserver, environment:production, location:west usw. Labels werden immer als Schlüssel/Wert-Paare hinzugefügt:

{
 "labels": {
    "vmrole": "webserver",
    "environment": "production",
    "location": "west",...
    }
 }

Sie können Labels auf die folgenden Ressourcen anwenden:

  • VM-Instanzen
  • Weiterleitungsregeln (Beta)
  • Images
  • Persistente Festplatten
  • Snapshots nichtflüchtiger Speicher
  • Cloud Storage-Buckets
  • Statische externe IP-Adressen (Beta)
  • VPN-Tunnel (Beta)

Wenn Sie Ihren Ressourcen Labels hinzufügen, können Sie Funktionen wie die verschachtelte Filterung nutzen, um mithilfe von Labels genauere Suchvorgänge in Bezug auf Ihre Ressourcen durchzuführen.

Vorbereitung

Beschränkungen

  • Sie können jeder Ressource bis zu 64 Labels zuweisen.
  • Ressourcen, die als Alpha aufgelistet sind, werden bisher noch nicht von gcloud oder der Google Cloud Console unterstützt. Verwenden Sie stattdessen die Compute Engine API (Alpha), um Labels für diese Ressourcen festzulegen.

Labelformat

  • Labelschlüssel und -werte müssen das folgende Format haben:

    • Schlüssel und Werte dürfen jeweils nicht länger als 63 Zeichen sein.
    • Schlüssel und Werte dürfen nur Folgendes enthalten:
      • Kleinbuchstaben
      • Ziffern
      • Unterstriche
      • Bindestriche
    • Internationale Zeichen sind erlaubt
    • Labelschlüssel müssen mit einem Kleinbuchstaben beginnen.
    • Labelschlüssel dürfen nicht leer sein

Ressourcen mit Labels erstellen

Beim Erstellen einer neuen Ressource können Sie der Ressource Labels zuweisen.

Console

  1. Zur Seite Instanz erstellen

    Zur Seite "Instanz erstellen"

  2. Maximieren Sie den Abschnitt Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.
  3. Geben Sie unter Verwaltung die Labels an, die Sie dieser Ressource hinzufügen möchten.
  4. Fahren Sie mit der Erstellung fort.

gcloud

Geben Sie beim Erstellen der Ressource das Flag --labels gefolgt von einer durch Kommas getrennten Liste mit Schlüssel/Wert-Paaren für Labels an. Beispiel:

gcloud compute instances create ... --labels webserver=backend,media=images

Dasselbe Flag wird bei der Erstellung von Images und Laufwerken verwendet.

API

Fügen Sie in der API während der POST-Anfrage zum Hinzufügen einer neuen Ressource das labels-Attribut in den Anfragetext ein, damit die Labels der neuen Ressource zugewiesen werden. Der Anfragetext für die Erstellung einer VM-Instanz hat zum Beispiel die folgenden Labels:

body = {
  "name": "[INSTANCE_NAME]",
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
   ...,
  "labels": [{
    "key": "webserver",
    "value": "backend"
    },
    {
    "key": "media",
    "value": "images"
   }]
 }

Die gleiche Eigenschaft kann beim Erstellen von Images und Laufwerken angewendet werden.

Labels nachträglich zu Ressourcen hinzufügen oder aktualisieren

Sie können bestehende Ressourcen mit Labels versehen oder diese auch aktualisieren.

Console

  1. Rufen Sie die entsprechende Ressourcenseite, für die Sie Labels hinzufügen möchten, auf.
  2. Klicken Sie auf die Kästchen neben den Ressourcen, die Sie mit Labels versehen möchten.
  3. Klicken Sie auf Infofeld anzeigen, um die Spalte mit den Labels zu maximieren.
  4. Aktualisieren Sie die Labels oder fügen Sie neue hinzu.
  5. Speichern Sie die Änderungen.

gcloud

Geben Sie im gcloud-Befehlszeilentool den Unterbefehl update mit dem Flag --update-labels ein, um ein Label hinzuzufügen oder zu ändern. Um beispielsweise einem Laufwerk ein Label hinzuzufügen, verwenden Sie den Unterbefehl gcloud compute disks update [DISK] --update-labels:

gcloud compute disks update example-disk --update-labels backend=webserver,media=images

Wenn Sie einen bereits vorhandenen Labelschlüssel angeben, aktualisiert das Tool den vorhandenen Schlüssel mit dem neuen Labelwert. Bei Angabe eines neuen Schlüssels fügt das Tools diesen der Labelliste hinzu.

Verwenden Sie für Instanzen, Snapshots und Images die Befehle gcloud compute instances, gcloud compute snapshots oder gcloud compute images.

API

Wenn Sie Labels hinzufügen oder aktualisieren möchten, stellen Sie eine POST-Anfrage an die Methode setLabels der entsprechenden Ressource mit dem neuesten Fingerabdruck und einer vollständigen Liste der Labels, die zugewiesen werden sollen.

Wenn Sie die bisherigen Labels der Ressource übernehmen möchten, muss die Anfrage, ähnlich wie bei Metadaten und Tags, diese Labels zusammen mit allen neu hinzuzufügenden Labels enthalten.

Durch das folgende Snippet wird z. B. eine Anfrage an die Methode setLabels einer Instanz gestellt. Sie können auch eine Anfrage an die Methode setLabels eines Laufwerks, eines Snapshots oder eines Images stellen:

Request

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": {
  "environment": "test",
  "an-existing-tag": ""
 },
 "labelFingerprint": "42WmSpB8rSM="
}

Es funktioniert ähnlich, wenn Sie Ressourcen bei deren Erstellung Labels hinzufügen möchten. Dazu geben Sie das Objekt labels an.

Labelfingerabdrücke für API-Anfragen abrufen

Wenn Sie Labels in der API aktualisieren oder hinzufügen, müssen Sie mit der Anfrage den neuesten Labelfingerabdruck angeben, um Konflikte mit anderen Anfragen zu vermeiden. Dies gilt nur für API-Anfragen. In der Cloud Console und im gcloud-Tool ist kein Fingerabdruck erforderlich.

Um den jüngsten Labelfingerabdruck für eine Anfrage abzurufen, stellen Sie eine GET-Anfrage an die entsprechende Ressource. Durch das folgende Snippet wird z. B. ein labelsFingerprint für eine Instanz angefordert. Sie können eine ähnliche Anfrage an ein Laufwerk, einen Snapshot oder ein Image stellen.

Suchen Sie das labelFingerprint-Attribut:

Request

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance
200 OK

{

 "kind": "compute#instance",
 "id": "4392196237934605253",
 "creationTimestamp": "2015-09-15T14:05:16.475-07:00",
 "zone": "https://content.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f",
 "status": "RUNNING",
 ...
 "labels": {
  "environment": "test"
 },
 "labelFingerprint": "p1ty_9HoBk0="
}

Label entfernen

Console

  1. Rufen Sie die entsprechende Ressourcenseite, für die Sie Labels hinzufügen möchten, auf.
  2. Wählen Sie das Kästchen neben den Ressourcen aus, für die Sie Labels entfernen möchten.
  3. Klicken Sie auf Infofeld anzeigen, um die Spalte mit den Labels zu erweitern.
  4. Klicken Sie auf das X neben den Labels, die Sie entfernen möchten.
  5. Speichern Sie die Änderungen.

gcloud

Führen Sie mit dem gcloud-Befehlszeilentool den Befehl update mit dem Flag --remove-labels aus. Geben Sie die Schlüssel der Labels an, die entfernt werden sollen. Beispiel:

gcloud compute disks update example-disk --remove-labels backend,media

Für Snapshots und Images verwenden Sie die Sammlungen gcloud compute snapshots oder gcloud compute images.

API

Stellen Sie in der API eine POST-Anfrage an die Methode setLabels der entsprechenden API-Ressource: Instanzen, Laufwerke und Snapshots.

Geben Sie den aktuellen labelsFingerprint und eine leere Labelliste an, um alle Labels zu entfernen, oder geben Sie eine Liste mit den Labels an, die Sie beibehalten möchten. Geben Sie in diesem Fall nicht die Labels an, die Sie entfernen möchten. Beispiel:

Request

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/setLabels

{
 "labels": { },
 "labelFingerprint": "42WmSpB8rSM="
}

Suchanfragen mit Labels filtern

Sie können Ihre Ressourcen durchsuchen und die Ergebnisse nach Labels filtern.

Console

  1. Rufen Sie die entsprechende Ressourcenseite, für die Sie Labels hinzufügen möchten, auf.

gcloud

Erstellen Sie in gcloud eine list-Anfrage und verwenden Sie das Flag --filter. Mit der Syntax labels.key=[VALUE] können Sie nach Labels filtern. Wenn Sie beispielsweise nach einem Label mit env als Schlüssel und dev als Wert filtern möchten, können Sie folgenden Befehl ausführen:

gcloud compute instances list --filter labels.env=dev

Eine vollständige Dokumentation der Filtersyntax im gcloud-Tool finden Sie in der Dokumentation zu gcloud topic filters.

API

In der API stellen Sie eine Listenanfrage mit dem URL-codierten Abfrageparameter filter. Wenn Sie z. B. nach einem Labelschlüssel env filtern möchten, dessen Wert gleich dev ist, stellen Sie folgende GET-Anfrage:

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/list?filter=labels.env+eq+dev

Weitere Informationen finden Sie in der filter-Dokumentation in der Referenz zur Compute Engine API.

Beziehung zwischen Instanzlabels und Netzwerk-Tags

In der Vergangenheit waren Labels und Tags verwandt. Wenn Sie einer VM-Instanz beispielsweise ein webserver:test-Label hinzugefügt haben, fügte Compute Engine der Instanz automatisch ein webserver-Tag hinzu.

Jetzt sind Labels und Tags getrennt. Wenn Sie eine Beschriftung für eine Instanz erstellen, erstellt Compute Engine kein Tag für die Instanz. Wenn Sie ein Tag für eine Instanz erstellen müssen, müssen Sie dieses manuell erstellen.

Weitere Informationen zum Erstellen von Tags finden Sie auf der Seite "Netzwerk-Tags".

Weitere Informationen