Workload Identity verwenden

Auf dieser Seite wird beschrieben, wie Sie Ihren Cloud Run for Anthos-Dienst für die Verwendung von Google Cloud APIs authentifizieren, indem Sie Workload Identity aktivieren.

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 in einem neuen Cluster aktivieren oder Workload Identity in 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 der Google Cloud Console auf:

    Zu Cloud Run for Anthos

  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.

    Image

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

  5. Klicken Sie auf Weiter, um mit dem nächsten Abschnitt fortzufahren.

  6. Wählen Sie im Abschnitt Konfigurieren, wie dieser Dienst ausgelöst wird die Verbindung aus, die Sie zum Auslösen des Dienstes verwenden möchten.

  7. Klicken Sie auf Erstellen, um das Image in Cloud Run for Anthos bereitzustellen. Warten Sie dann, bis die Bereitstellung abgeschlossen ist.

Befehlszeile

  • Konfigurieren Sie für vorhandene Dienste das Laufzeitdienstkonto durch Ausführung des Befehls gcloud run services update mit den folgenden Parametern:

    gcloud run 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.
  • Konfigurieren Sie für neue Dienste das Laufzeitdienstkonto durch Ausführen des Befehls gcloud run deploy mit dem Parameter --service-account:

    gcloud run deploy --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

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe-Befehl mithilfe des Flags --format=export. Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud beta run services replace bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml im lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    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

    • SERVICE durch den Namen Ihres Cloud Run for Anthos-Dienstes.
    • 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