GKE-Ressourcen mit Tags verwalten


Auf dieser Seite erfahren Sie, wie Sie Tags verwenden, um Ihre GKE-Cluster (Google Kubernetes Engine) zu verwalten und Richtlinien für die Identitäts- und Zugriffsverwaltung bedingt auf Knoten anzuwenden.

Übersicht

Tags sind Schlüssel/Wert-Paare, mit denen Sie Google Cloud-Ressourcen auf Organisations- oder Projektebene annotieren und verwalten können. Mit Tags können Sie Ihre Ressourcen organisieren und Richtlinien wie Firewalls oder IAM-Richtlinien bedingt anwenden. Tags unterstützen die IAM-Zugriffssteuerung, mit der Sie festlegen können, wer Tags anhängen, erstellen, aktualisieren oder löschen kann.

Anwendungsfälle für Tags in GKE

Sie können Tags in GKE für Situationen wie die folgenden verwenden:

  • Netzwerk-Firewallrichtlinien bedingt auf bestimmte Knoten anwenden. Verweigern Sie beispielsweise eingehenden Traffic aus dem öffentlichen Internet zu allen Knoten eines Clusters in Staging- oder Testumgebungen. Eine Anleitung finden Sie unter Netzwerk-Firewallrichtlinien selektiv in GKE erzwingen.
  • IAM-Rollen bedingt anhand von Tags zuweisen. Gewähren Sie Auftragnehmern beispielsweise automatisch Zugriff auf bestimmte Umgebungen, die normalerweise nur Vollzeitmitarbeitern zur Verfügung stehen. Eine Anleitung finden Sie im Rest dieses Dokuments.
  • Audit-Informationen basierend auf angewendeten Tags auf Projekt- oder Organisationsebene prüfen und analysieren.

Funktionsweise

Insbesondere bei der Durchsetzung von Netzwerk-Firewallrichtlinien erstellen Sie ein Tag und legen das Tag explizit für die Firewall fest. In allen anderen Fällen erstellen Sie ein Tag ohne Festlegung einer Firewall.

Nachdem Sie das Tag erstellt haben, hängen Sie das Tag als Schlüssel/Wert-Paar an Ihre GKE-Ressourcen an. Für Netzwerk-Firewallrichtlinien verwenden Sie die GKE API. Für alle anderen Zwecke verwenden Sie die Tags API.

Für jeden Schlüssel können Sie einen Wert an eine Ressource anhängen. Wenn Sie beispielsweise env:dev an einen GKE-Cluster angehängt haben, können Sie nicht env:prod oder env:test anhängen. Sie können jeder Ressource bis zu 50 Tags ohne Firewall und bis zu fünf Firewall-Tags hinzufügen.

Methoden zur Ressourcenannotation in GKE

In GKE gibt es mehrere Methoden, um Ihre Ressourcen mit Annotationen zu versehen, wie in der folgenden Tabelle dargestellt:

Anmerkungstyp Beschreibung Beispiel
Tags (keine Firewall)
  • Mit der Tags API auf Clusterressource anwenden
  • Organisieren Sie Ressourcen, um die Nutzung und Abrechnung zu verfolgen.
  • IAM-Richtlinien bedingt anwenden
  • Zugriff auf bestimmte Tags mit IAM steuern

Weitere Informationen finden Sie unter Tags – Übersicht.

IAM-Rollen bedingt gewähren, um den Zugriff auf Ressourcen mit bestimmten Tags zu steuern
Tags (Firewall)
  • Auf GKE- oder Knotenpool mit GKE API anwenden
  • Wenden Sie Netzwerk-Firewallrichtlinien von Cloud Next Generation Firewall bedingt an.
  • Zugriff auf bestimmte Tags mit IAM steuern
  • GKE hängt die Schlüssel/Wert-Paare an die zugrunde liegenden Compute Engine-VMs an.

Weitere Informationen finden Sie unter Netzwerk-Firewallrichtlinien selektiv in GKE anwenden.

Eingehenden Traffic automatisch aus dem öffentlichen Internet in alle Staging- oder Testumgebungen ablehnen
Netzwerk-Tags
  • Auf GKE- oder Knotenpool mit GKE API anwenden
  • Einfache Strings ohne IAM-Zugriffssteuerung
  • VPC-Firewallregeln bedingt anwenden
  • GKE hängt die Schlüssel/Wert-Paare an die zugrunde liegenden Compute Engine-VMs an.

Weitere Informationen finden Sie unter Netzwerk-Tags verwenden, um Firewallregeln auf Knoten anzuwenden.

Eingehenden Traffic automatisch aus dem öffentlichen Internet in alle Staging- oder Testumgebungen ablehnen
GKE-Clusterlabels
  • Auf GKE- oder Knotenpool mit GKE API anwenden
  • Organisieren Sie Ressourcen, um die Nutzung und Abrechnung zu verfolgen.

Weitere Informationen finden Sie unter Clusterlabels.

Unterscheidung zwischen Clustern, die bestimmten Kostenstellen oder Teams in Ihrer Organisation gehören.
Kubernetes-Labels
  • Auf Kubernetes API-Objekte anwenden
  • Verknüpfen Sie Clusterkomponenten und -ressourcen miteinander und verwalten Sie den Ressourcenlebenszyklus.

Weitere Informationen finden Sie unter Labels und Selektoren von Kubernetes.

Arbeitslasten müssen auf Knoten mit bestimmten Labels geplant werden.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Tags an einen Cluster anhängen

Sie können Tags an einen vorhandenen Cluster anhängen, wenn Sie die entsprechenden Berechtigungen haben. Verwenden Sie dazu die Google Cloud CLI, die Google Cloud Console, die Tags API oder Terraform.

gcloud

Bevor Sie mit der gcloud CLI ein Tag an Ihre GKE-Ressourcen anhängen können, müssen Sie das Tag erstellen und seine Werte konfigurieren. Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Tag erstellen und Tag-Werte hinzufügen.

Führen Sie den folgenden Befehl aus, um eine Tag-Bindung zum Anhängen eines Tags an einen Cluster zu erstellen:

gcloud alpha resource-manager tags bindings create \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ersetzen Sie Folgendes:

  • TAG_VALUE_ID: Die permanente ID oder der Namespace-Name des Tag-Werts, der angehängt werden soll. Beispiel: tagValues/4567890123. Weitere Informationen zu Tag-IDs finden Sie unter Tag-Definitionen und Kennzeichnungen.
  • CLUSTER_LOCATION: der Compute Engine-Standort. Geben Sie für zonale Cluster die Compute-Zone an.
  • RESOURCE_ID: Der vollständige Ressourcenname Ihres Clusters, z. B. //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    In der Ressourcen-ID:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
    • CLUSTER_NAME ist der Name Ihres Clusters.

Console

Bevor Sie mit der Google Cloud Console ein Tag an Ihre GKE-Ressourcen anhängen können, müssen Sie das Tag erstellen und seine Werte konfigurieren. Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Tag erstellen und Tag-Werte hinzufügen.

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie im Bereich Metadaten neben Tags auf Tags bearbeiten.

  4. Wenn Ihre Organisation nicht im Bereich Tags angezeigt wird, klicken Sie auf Bereich auswählen. Wählen Sie Ihre Organisation aus und klicken Sie auf Öffnen.

  5. Wählen Sie im Bereich Tags die Option Tag hinzufügen aus.

  6. Wählen Sie aus der Liste den Schlüssel für das Tag aus, das Sie anhängen möchten. Sie können die Liste filtern, indem Sie Suchbegriffe eingeben.

  7. Wählen Sie den Wert für das Tag, das Sie anhängen möchten, aus der Liste aus. Sie können die Liste filtern, indem Sie Suchbegriffe eingeben.

  8. Klicken Sie auf Speichern.

  9. Klicken Sie im Dialogfeld Bestätigen auf Bestätigen, um das Tag anzuhängen.

    Mit einer Benachrichtigung wird bestätigt, dass Ihre Tags aktualisiert wurden.

API

Wenn Sie ein Tag an eine Ressource anhängen möchten, müssen Sie zuerst eine JSON-Darstellung einer Tag-Bindung erstellen, die die permanenten IDs des Tag-Werts und der Ressource enthält. Weitere Informationen zum Format einer Tag-Bindung finden Sie in der Referenz zu TagBinding.

Verwenden Sie die Methode tagBindings.create mit dem regionalen oder zonalen Endpunkt, in dem sich Ihr Cluster befindet.

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

Ersetzen Sie LOCATION durch die Region oder Zone, in der sich der Cluster befindet.

JSON-Anfragetext:

{
  "parent": "RESOURCE_ID",
  "tagValue": "TAG_VALUE_ID"
}

Ersetzen Sie Folgendes:

  • RESOURCE_ID: Der vollständige Ressourcenname Ihres Clusters, z. B. //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    In der Ressourcen-ID:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
    • CLUSTER_NAME ist der Name Ihres Clusters.
  • TAG_VALUE_ID: Die permanente ID oder der Namespace-Name des Tag-Werts, der angehängt werden soll. Beispiel: tagValues/4567890123. Weitere Informationen zu Tag-IDs finden Sie unter Tag-Definitionen und Kennzeichnungen.

Die Ausgabe sieht in etwa so aus:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
    "name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
}

Terraform

Informationen zum Erstellen eines Tags, zum Konfigurieren seiner Werte und zum Anhängen eines Tags an eine Ressource mithilfe von Terraform finden Sie im folgenden Beispiel:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-tag"
  location = "us-central1"

  enable_autopilot = true

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

data "google_project" "default" {}

resource "google_tags_tag_key" "default" {
  parent      = "projects/${data.google_project.default.project_id}"
  short_name  = "env"
  description = "Environment tag key"
}

resource "google_tags_tag_value" "default" {
  parent      = "tagKeys/${google_tags_tag_key.default.name}"
  short_name  = "dev"
  description = "Development environment tag value."
}

resource "google_tags_location_tag_binding" "default" {
  parent    = "//container.googleapis.com/${google_container_cluster.default.id}"
  location  = google_container_cluster.default.location
  tag_value = "tagValues/${google_tags_tag_value.default.name}"
}

Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für GKE.

An einen Cluster angehängte Tags auflisten

Sie können die mit einem Cluster verknüpften Tags mithilfe der gcloud CLI, der Google Cloud Console oder der Tags API auflisten.

gcloud

Führen Sie den folgenden Befehl aus, um eine Liste der Tag-Bindungen abzurufen, die an einen Cluster angehängt sind:

gcloud alpha resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ersetzen Sie Folgendes:

  • CLUSTER_LOCATION: Geben Sie für regionale Cluster die Computing-Region an. Geben Sie für zonale Cluster die Compute-Zone an.

  • RESOURCE_ID: Der vollständige Ressourcenname Ihres Clusters, z. B. //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    In der Ressourcen-ID:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID.

    • CLUSTER_NAME ist der Name Ihres Clusters.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie anzeigen möchten.

  3. Suchen Sie im Abschnitt Metadaten neben Tags nach den derzeit angehängten Tag-Werten.

API

Um eine Liste der Tag-Bindungen für einen Cluster zu erhalten, verwenden Sie die Methode tagBindings.list mit dem regionalen oder zonalen Endpunkt, an dem sich Ihr Cluster befindet.

GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings

JSON-Anfragetext:

{
  "parent": RESOURCE_ID,
}

Ersetzen Sie Folgendes:

  • RESOURCE_ID: Der vollständige Ressourcenname Ihres Clusters, z. B. //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    In der Ressourcen-ID:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
    • CLUSTER_NAME ist der Name Ihres Clusters.

Die Ausgabe sieht in etwa so aus:

"tagBindings": [
  {
    "name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2LOCATION%2Fclusters%2Ftestcluster/tagValues/758072120217",
    "parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
    "tagValue": "TAG_VALUE_ID"
  }
]

Tags von einem Cluster trennen

Sie können ein Tag von einem Cluster trennen. Löschen Sie dazu mit der gcloud CLI, der Google Cloud Console oder der Tags API die Tag-Bindungsressource, die mit dem Cluster verknüpft ist. Wenn Sie ein Tag löschen müssen, müssen Sie es zuerst von allen angehängten Ressourcen trennen.

gcloud

Führen Sie den folgenden Befehl aus, um eine mit einem Cluster verknüpfte Tag-Bindung zu trennen:

gcloud alpha resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_ID \
    --parent=RESOURCE_ID \
    --location=CLUSTER_LOCATION

Ersetzen Sie Folgendes:

  • TAG_VALUE_ID: Die permanente ID oder der Namespace-Name des Tag-Werts, der getrennt werden soll. Beispiel: tagValues/4567890123. Weitere Informationen zu Tag-IDs finden Sie unter Tag-Definitionen und Kennzeichnungen.

  • CLUSTER_LOCATION: Geben Sie für regionale Cluster die Computing-Region an. Geben Sie für zonale Cluster die Compute-Zone an.

  • RESOURCE_ID: Der vollständige Ressourcenname Ihres Clusters, z. B. //container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.

    In der Ressourcen-ID:

    • PROJECT_ID: Ihre Google Cloud-Projekt-ID.

    • CLUSTER_NAME ist der Name Ihres Clusters.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie im Bereich Metadaten neben Tags auf Tags bearbeiten.

  4. Klicken Sie im Bereich Tags neben dem Tag, das Sie trennen möchten, auf Element löschen.

  5. Klicken Sie auf Speichern.

  6. Klicken Sie im Dialogfeld Bestätigen auf Bestätigen, um das Tag zu trennen.

    Mit einer Benachrichtigung wird bestätigt, dass Ihre Tags aktualisiert wurden.

API

Verwenden Sie zum Löschen von Tag-Bindungen für einen Cluster die Methode tagBindings.delete mit dem regionalen oder zonalen Endpunkt, in dem sich Ihr Cluster befindet.

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME

Ersetzen Sie TAG_BINDING_NAME durch den vollständigen Ressourcennamen des tagBinding-Objekts, das Sie trennen möchten. Beispiel: tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.

Tag-Schlüssel und Tag-Werte löschen

Achten Sie vor dem Löschen von Tag-Schlüsseln und -Werten darauf, dass die Tags von allen Ressourcen getrennt sind. Lesen Sie dann Tags löschen, um die Schlüssel und Werte zu löschen.

Bedingungen und Tags für Identity and Access Management

Mit Tags und IAM-Bedingungen können Sie Nutzern in Ihrer Projekthierarchie bedingte Rollenbindungen zuweisen. Wenn Sie das einem Cluster angehängte Tag ändern oder löschen, kann GKE den Nutzerzugriff auf diesen Cluster entfernen, wenn eine IAM-Zulassungsrichtlinie mit bedingten Rollenbindungen angewendet wurde.

Die Autorisierung zum Auflisten und Erstellen von GKE-Clustern wird auf Projektebene, nicht auf der Ebene einzelner Cluster, überprüft. Wenn Sie bedingte IAM-Rollenbindungen mit Tags auf Clusterebene verwenden, um den Zugriff auf bestimmte Cluster einzuschränken, können bei diesen Nutzern Fehler auftreten, wenn sie versuchen, Cluster im Projekt aufzulisten oder zu erstellen. Um diese Fehler zu vermeiden, hängen Sie ein Tag an das übergeordnete Projekt an und verwenden eine bedingte Rollenbindung, um die Liste zu gewähren oder Zugriff zu erstellen. Informationen zu Rollen und Berechtigungen finden Sie in der Referenz für IAM-Rollen.

Weitere Informationen zu bedingten Zugriffsberechtigungen in IAM finden Sie unter IAM-Bedingungen und -Tags.

Nächste Schritte