Workload Identity verwenden

Auf dieser Seite wird erläutert, wie Sie Ihren Cloud Run for Anthos in Google Cloud-Dienst authentifizieren, um Google Cloud APIs durch Aktivieren von Workload Identity zu verwenden.

Zur Verwendung von Google Cloud APIs wie Compute APIs, Storage und Database APIs oder Machine Learning APIs innerhalb Ihres GKE-Clusters müssen Sie über Berechtigungen verfügen und Ihren Cloud Run for Anthos-Dienst authentifizieren, indem Sie Workload Identity aktivieren und ein Kubernetes-Dienstkonto so binden, dass es als Google-Dienstkonto fungiert.

Workload Identity in Ihrem Cluster aktivieren

Wenn Sie Workload Identity für Cloud Run for Anthos einrichten möchten, folgen Sie den nachstehenden Anweisungen, um die Aktivierung für Ihren Cluster vorzunehmen. Fahren Sie andernfalls mit dem nächsten Abschnitt fort:

Workload Identity für einen neuen Cluster aktivieren oder Workload Identity auf einem vorhandenen Cluster aktivieren

Messwerte in einem Cluster mit Workload Identity aktivieren

Wenn Sie Workload Identity aktivieren, werden bestimmte Messwerte wie die Anzahl der Überarbeitungsanfragen oder die Latenz von Anfragen nicht von Cloud Run for Anthos an die Operations-Suite von Google Cloud gemeldet. Messwerte für CPU und Arbeitsspeicher werden jedoch weiterhin gemeldet.

Wenn Sie alle Messwerte aktivieren möchten, müssen Sie manuell Berechtigungen zum Schreiben von Messwerten in Cloud Monitoring festlegen. Dazu erteilen Sie dem Google-Dienstkonto (Google Service Account, GSA), das Ihrem Cloud Run for Anthos-Dienst zugeordnet ist, die Rolle „Monitoring-Messwert-Autor“.

Weisen Sie dem GSA Ihres Dienstes die Rollenberechtigungen eines „Monitoring-Messwert-Autors” zu:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

Ersetzen Sie:

  • PROJECT_ID durch die Projekt-ID für ein Clusterprojekt, in dem Ihr KSA gehostet wird.
  • GSA_PROJECT durch die Projekt-ID für ein GSA, das sich nicht im Cluster befindet. Sie können einen beliebigen GSA in Ihrer Organisation verwenden.

Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Dienstkonten binden

Sie müssen eine Beziehung einrichten, damit ein Kubernetes-Dienstkonto (Kubernetes service account, KSA) als Google-Dienstkonto (Google service account, GSA) fungiert. Jede als KSA ausgeführte Arbeitslast wird beim Zugriff auf Google Cloud APIs automatisch als GSA authentifiziert.

  1. Wenn kein Kubernetes-Dienstkonto (KSA) vorhanden ist, erstellen Sie eines im selben Kubernetes-Namespace wie Ihr Cloud Run for Anthos-Dienst. Andernfalls fahren Sie mit dem nächsten Schritt fort:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  2. Erstellen Sie eine Beziehung zwischen KSAs und GSAs, damit sich die als KSA ausgeführte Arbeitslast beim Zugriff auf Google Cloud APIs automatisch als GSA authentifiziert:

    1. Autorisieren Sie Ihr KSA, sodass es als GSA fungieren kann:

      gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
      GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
    2. Aktualisieren Sie den Cluster, um die Bindung zu nutzen:

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE \
       KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com

Neuen Dienst mit neuer Identität bereitstellen

Stellen Sie Ihren Dienst mithilfe des KSA bereit, der in dem Cluster und Namespace des Dienstes vorhanden ist, den Sie bereitstellen möchten. Das Dienstkonto gehört möglicherweise zu einem anderen Projekt als der Cluster.

Console

  1. Rufen Sie Cloud Run for Anthos in Google Cloud auf.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Klicken Sie unter Erweiterte Einstellungen auf Container.

    Bild

  4. Klicken Sie auf das Drop-down-Menü Dienstkonto und wählen Sie das gewünschte Dienstkonto aus.

  5. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Sie können einen vorhandenen Dienst für ein neues Laufzeitdienstkonto mithilfe des folgenden Befehls aktualisieren:

gcloud kuberun core services update SERVICE --service-account SERVICE_ACCOUNT

Ersetzen Sie:

  • SERVICE durch den Namen des Dienstes.
  • SERVICE_ACCOUNT durch das Dienstkonto, das der neuen Identität zugeordnet ist. Sie können ein Dienstkonto auch während der Bereitstellung mit dem folgenden Befehl festlegen:
gcloud kuberun core services create --image IMAGE_URL --service-account SERVICE_ACCOUNT

Ersetzen Sie:

  • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest.
  • SERVICE_ACCOUNT durch das Dienstkonto, das der neuen Identität zugeordnet ist.

YAML

Wenn Sie eine Konfiguration Ihres bestehenden Dienstes mithilfe einer YAML-Datei ändern möchten, erhalten Sie eine Kopie der aktuellen Konfiguration. Bearbeiten und speichern Sie die Änderungen und in einer lokalen Datei. Anschließend stellen Sie diese Änderungen für Ihren Dienst bereit.

  1. Lassen Sie die Konfiguration als YAML anzeigen und kopieren Sie dann die Konfiguration Ihres Dienstes in eine lokale Datei, z. B. service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run for Anthos-Dienstes.

  2. Aktualisieren Sie in Ihrer lokalen Datei das Attribut serviceAccountName::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    Ersetzen Sie;

    • SERVICE durch den Namen Ihres Dienstes von Cloud Run for Anthos in Google Cloud.
    • SERVICE_ACCOUNT durch das Dienstkonto, das der neuen Identität zugeordnet ist.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud beta run services replace service.yaml