Informationen zum Authentifizieren Ihrer Knative Serving-Dienste mit Workload Identity Federation for GKE, um auf Google Cloud -APIs wie Computing APIs, Speicher- und Datenbank APIs oder APIs für maschinelles Lernen zuzugreifen.
Zum Authentifizieren Ihrer Knative Serving-Dienste müssen Sie Folgendes tun:
- Workload Identity-Föderation für GKE in Ihrem Cluster aktivieren
- Kubernetes-Dienstkonto erstellen und ihm die erforderlichen IAM-Rollen zuweisen
Nachdem Sie diese Schritte ausgeführt haben, können Sie einen neuen Knative Serving-Dienst bereitstellen, der die von Ihnen erstellte Identität verwendet.
Workload Identity-Föderation für GKE in Ihrem Cluster aktivieren
Wenn Sie die Workload Identity-Föderation für GKE mit Knative Serving einrichten möchten, können Sie Flotten-Workload Identity-Föderation einrichten, anstatt eine Google Cloud JSON-Datei des Dienstkontos zu verwenden.
Berechtigungen zum Aktivieren aller Messwerte konfigurieren
Wenn Sie Messwerte wie die Anzahl der Berichtsanfragen oder die Anfragelatenz für Google Cloud Observability aktivieren möchten, müssen Sie Schreibberechtigungen für Cloud Monitoring manuell festlegen. Beispielsweise können Sie dem Kubernetes-Dienstkonto, das mit Knative Serving verknüpft ist, die Rolle Monitoring-Messwert-Autor (roles/monitoring.metricWriter) zuweisen, da sie die erforderlichen Berechtigungen zum Schreiben von Monitoringdaten enthält.
IAM-Rollen einem Kubernetes-ServiceAccount zuweisen
Jeder Knative Serving-Dienst, der als das von Ihnen konfigurierte Kubernetes-Dienstkonto ausgeführt wird, wird beim Zugriff auf Google Cloud APIs automatisch mit seiner föderierten Identität authentifiziert. Das Kubernetes-Dienstkonto muss im Cluster und Namespace des Knative Serving-Dienstes vorhanden sein, für den Sie die Workload Identity Federation for GKE verwenden möchten.
Wenn kein Kubernetes-Dienstkonto vorhanden ist, erstellen Sie eines im selben Kubernetes-Namespace wie Ihr Knative Serving-Dienst. Andernfalls fahren Sie mit dem nächsten Schritt fort:
kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
Weisen Sie Ihrem Kubernetes-Dienstkonto die erforderlichen IAM-Rollen direkt zu:
gcloud projects add-iam-policy-binding RESOURCE_PROJECT_ID \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/K8S_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT" \ --role "ROLE_NAME" \ --condition=None
Ersetzen Sie:
- Ersetzen Sie RESOURCE_PROJECT_ID durch die Google Cloud Projekt-ID, in der sich die Google Cloud Zielressourcen befinden.
- PROJECT_NUMBER durch die Projektnummer desGoogle Cloud -Projekts für den Cluster, in dem sich Ihr Kubernetes-Dienstkonto und Ihre Knative Serving-Dienste befinden.
- PROJECT_ID durch die ID des Google Cloud -Projekts für den Cluster, in dem sich Ihr Kubernetes-Dienstkonto und Ihre Knative Serving-Dienste befinden.
- K8S_NAMESPACE und KUBERNETES_SERVICEACCOUNT durch den Namespace und den Namen Ihres Kubernetes-Dienstkontos.
- ROLE_NAME durch die IAM-Rolle, die dem Kubernetes-Dienstkonto zugewiesen werden soll, z. B.
roles/monitoring.metricWriter.
Neuen Dienst zur Verwendung der Workload Identity Federation for GKE bereitstellen
Stellen Sie einen neuen Knative Serving-Dienst bereit, der die von Ihnen erstellte Workload Identity Federation for GKE verwendet.
Console
Rufen Sie in der Google Cloud Console Knative Serving auf:
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.
Klicken Sie unter Erweiterte Einstellungen auf Container.
Klicken Sie auf das Drop-down-Menü Dienstkonto und wählen Sie das gewünschte Dienstkonto aus.
Klicken Sie auf Weiter, um mit dem nächsten Abschnitt fortzufahren.
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.
Klicken Sie auf Erstellen, um das Image in Knative Serving bereitzustellen. Warten Sie, bis die Bereitstellung abgeschlossen ist.
Befehlszeile
Legen Sie für vorhandene Dienste das Kubernetes-Dienstkonto fest, indem Sie den Befehl
gcloud run services updatemit den folgenden Parametern ausführen:gcloud run services update SERVICE --service-account KUBERNETES_SERVICEACCOUNT
Ersetzen Sie:
- SERVICE durch den Namen Ihres Knative Service-Dienstes.
- KUBERNETES_SERVICEACCOUNT durch das Kubernetes-Dienstkonto, mit dem Sie die Workload Identity erstellt haben.
Legen Sie für neue Dienste das Kubernetes-Dienstkonto fest, indem Sie den Befehl
gcloud run deploymit dem Parameter--service-accountausführen:gcloud run deploy --image IMAGE_URL --service-account KUBERNETES_SERVICEACCOUNT
Ersetzen Sie:
- IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
gcr.io/cloudrun/hello. - KUBERNETES_SERVICEACCOUNT durch das Kubernetes-Dienstkonto, mit dem Sie die Workload Identity erstellt haben.
- IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
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 run services replace bereitstellen.
Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.
Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen
service.yamlim lokalen Arbeitsbereich herunter:gcloud run services describe SERVICE --format export > service.yaml
Ersetzen Sie SERVICE durch den Namen Ihres Knative-Serving-Dienstes.
Aktualisieren Sie in Ihrer lokalen Datei das Attribut
serviceAccountName::apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: KUBERNETES_SERVICEACCOUNT
Ersetzen
- SERVICE durch den Namen Ihres Knative Service-Dienstes.
- KUBERNETES_SERVICEACCOUNT durch das Kubernetes-Dienstkonto, mit dem Sie die Workload Identity erstellt haben.
Stellen Sie die Konfiguration mit dem folgenden Befehl in Ihrem Knative Serving-Dienst bereit:
gcloud run services replace service.yaml
Vorhandene Dienste zur Verwendung der Workload Identity Federation for GKE migrieren
Wenn Sie die Workload Identity Federation for GKE in einem vorhandenen Cluster aktiviert haben, muss jeder Dienst in diesem Cluster, für den Sie die Workload Identity Federation for GKE verwenden möchten, migriert werden. Vorhandene Dienste migrieren
Nächste Schritte
Zugriff auf Ihre Dienste verwalten