Wenn Sie einen GKE-Cluster in Google Cloud registrieren, müssen Sie je nach ausgewählter Registrierungsoption möglicherweise einen oder mehrere der folgenden Schritte ausführen, bevor Sie den Cluster registrieren. In diesem Leitfaden wird davon ausgegangen, dass Sie die allgemeinen Voraussetzungen für die Clusterregistrierung bereits ausgeführt haben.
Identitätsföderation von Arbeitslasten für GKE aktivieren
Wir empfehlen die Registrierung Ihrer GKE-Cluster mit aktivierter Identitätsförderung von Arbeitslasten für Flotten, wodurch eine konsistente Möglichkeit für Anwendungen auf den Clustern geschaffen wird, sich bei Google Cloud APIs und -Diensten zu authentifizieren. Weitere Informationen zu den Vorteilen der Aktivierung der Identitätsförderung von Arbeitslasten für Flotten finden Sie unter Identitätsförderung von Arbeitslasten für Flotten verwenden.
Damit Sie dieses Feature verwenden können, muss die Identitätsförderung von Arbeitslasten für GKE vor der Registrierung für den Cluster aktiviert sein. Die Registrierung eines GKE-Clusters mit der Identitätsförderung von Arbeitslasten für Flotten ohne Aktivierung der Identitätsförderung von Arbeitslasten für GKE im Cluster kann zu Inkonsistenzen bei der Bestätigung der Identität durch Arbeitslasten im Cluster führen. Diese Konfiguration wird nicht unterstützt. Für Autopilot-Cluster ist die Identitätsförderung von Arbeitslasten für GKE standardmäßig aktiviert.
gcloud
Um zu prüfen, ob die Identitätsförderung von Arbeitslasten für GKE für Ihren Cluster aktiviert ist, führen Sie folgenden Befehl aus, der den Workload Identity-Pool des Clusters auflistet: Wenn Sie noch keine Standardzone oder -region für gcloud
angegeben haben, müssen Sie beim Ausführen dieses Befehls das Flag --region
oder --zone
angeben.
gcloud container clusters describe CLUSTER_NAME --format="value(workloadIdentityConfig.workloadPool)"
Ersetzen Sie Folgendes:
- CLUSTER_NAME ist der
name
des GKE-Clusters.
Wenn ein Ergebnis ähnlich dem folgenden angezeigt wird, ist die Identitätsförderung von Arbeitslasten für GKE bereits auf Ihrem Cluster aktiviert:
GKE_PROJECT_ID.svc.id.goog
Wenn keine Ergebnisse vorhanden sind, ist die Identitätsförderung von Arbeitslasten für GKE nicht aktiviert. Folgen Sie der Anleitung unter Identitätsförderung von Arbeitslasten für GKE aktivieren.
Console
So prüfen Sie, ob die Identitätsförderung von Arbeitslasten für GKE für Ihren Cluster aktiviert ist:
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie in der Clusterliste auf den Namen Ihres Clusters.
Prüfen Sie auf der Seite mit den Clusterdetails im Abschnitt Sicherheit, ob Workload Identity als Aktiviert aufgeführt ist.
Wenn Workload Identity deaktiviert ist und Sie dieses Feature aktivieren möchten, gehen Sie so vor:
- Klicken Sie auf der Seite mit den Clusterdetails auf Workload Identity bearbeiten.
- Klicken Sie im Dialogfeld Workload Identity bearbeiten das Kästchen Workload Identity aktivieren an.
- Klicken Sie auf Änderungen speichern.
Berechtigungen zum Registrieren eines Clusters in einem anderen Projekt erteilen
Für die Registrierung eines GKE-Clusters in der Flotte in seinem eigenen Projekt sind keine speziellen Berechtigungen erforderlich, außer denen, die unter Zugriffsberechtigungen erteilen beschrieben sind. Wenn Sie einen GKE-Cluster des zugehörigen Projekts (GKE_PROJECT) bei einer Flotte in einem anderen Projekt (FLEET_HOST_PROJECT) registrieren möchten, muss das FLEET_HOST_PROJECT Dienst-Agent-Konto gcp-sa-gkehub
die Rolle gkehub.serviceAgent
im Projekt GKE_PROJECT haben. Diese Rolle gewährt dem Dienstkonto die Berechtigungen zum Verwalten von Clusterressourcen in diesem Projekt.
Mit der gcloud CLI oder der Google Cloud Console können Sie prüfen, ob das Dienstkonto gcp-sa-gkehub
des Hostprojekts der Flotte die erforderliche Rolle im Projekt des Clusters hat.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud projects get-iam-policy GKE_PROJECT_ID | grep gcp-sa-gkehub
Dabei gilt: GKE_PROJECT_ID ist die ID des Projekts Ihres Clusters.
Wenn das Flotten-Hostprojekt gcp-sa-gkehub
die erforderlichen Rollen im Projekt Ihres Clusters hat, sollte dies in der Ausgabe im Format service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
angezeigt werden. Beispiel:
- members:
- serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
role: roles/gkehub.serviceAgent
Console
Nachdem Sie das Projekt Ihres Clusters ausgewählt haben, rufen Sie die Seite IAM & Verwaltung in der Google Cloud Console auf.
Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen, um die vollständige Zulassungsrichtlinie anzusehen, einschließlich Dienst-Agents.
Wenn das Dienstkonto des Flotten-Hostprojekts gcp-sa-gkehub
die erforderlichen Rollen im Projekt Ihres Clusters hat, sollte dies in dieser Liste im Format service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
angezeigt werden.
Wenn der Dienst-Agent nicht in der IAM-Zulassungsrichtlinie des Projekts aufgeführt ist, gehen Sie so vor, um die erforderlichen Berechtigungen zu aktualisieren:
gcloud
Um
gcp-sa-gkehub
die Rollegkehub.serviceAgent
zuzuweisen, müssen Sie zuerst prüfen, ob dieses Dienstkonto im Flotten-Hostprojekt vorhanden ist. Wenn Sie bereits Cluster in diesem Flottenprojekt registriert haben, sollte es dieses Dienstkonto geben. Sehen Sie sich dazu die IAM-Zulassungsrichtlinie für das Flottenhostprojekt an:gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID | grep gcp-sa-gkehub
Wenn Sie das Dienstkonto
gcp-sa-gkehub
erstellen müssen, führen Sie den folgenden Befehl aus:gcloud beta services identity create --service=gkehub.googleapis.com --project=FLEET_HOST_PROJECT_ID
Dieser Befehl sollte Folgendes ausgeben:
Service identity created: service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
Führen Sie den folgenden Befehl aus, um dem Dienstkonto die Rolle
roles/gkehub.serviceAgent
in beiden Projekten und dieroles/gkehub.crossProjectServiceAgent
im Projekt des Clusters zuzuweisen:GKE_PROJECT_ID=GKE_PROJECT_ID FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud projects add-iam-policy-binding "${FLEET_HOST_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.crossProjectServiceAgent
Dabei gilt:
- GKE_PROJECT_ID ist die Google Cloud-Projekt-ID des GKE-Clusters.
- FLEET_HOST_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Sie Cluster registrieren möchten. Informationen zum Ermitteln dieses Werts
Führen Sie den folgenden Befehl noch einmal aus, um zu prüfen, ob die Rollenbindung erteilt wurde:
gcloud projects get-iam-policy GKE_PROJECT_ID
Wenn der Name des Dienstkontos zusammen mit den Rollen
gkehub.serviceAgent
undgkehub.crossProjectServiceAgent
angezeigt wird, wurden die Rollenbindungen erteilt. Beispiel:- members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.serviceAgent - members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.crossProjectServiceAgent
Dienstkonto für Terraform konfigurieren
Wenn Sie mit Terraform einen Google Kubernetes Engine-Cluster registrieren möchten, müssen Sie ein Dienstkonto erstellen, mit dem Terraform auf die Fleet API zugreifen kann, um eine Mitgliedschaft zu erstellen.
gcloud
So erstellen Sie ein Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Binden Sie die IAM-Rolle
gkehub.admin
an das Dienstkonto, damit Terraform es mit der Fleet API verwenden kann:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"
Wenn Sie einen neuen Cluster mit Terraform erstellen und dann registrieren möchten, binden Sie auch die Rolle
roles/container.admin
an das Dienstkonto an, damit Terraform dieses Dienstkonto verwenden kann, um auf die GKE API zum Erstellen eines Clusters zuzugreifen.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"
Ersetzen Sie Folgendes:
- FLEET_HOST_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Sie Cluster registrieren möchten. Informationen zum Ermitteln dieses Werts
- SERVICE_ACCOUNT_NAME der Anzeigename ist, den Sie für das [Dienstkonto] auswählen.
Laden Sie die JSON-Datei mit dem privaten Schlüssel des Dienstkontos herunter, wie unter Google Cloud-Dienstkonto mit
gcloud
erstellen beschrieben. Sie benötigen diese Datei, um Cluster mit Terraform zu erstellen und zu registrieren.
Dienstkonto für Config Connector konfigurieren
Wenn Sie zum Registrieren eines GKE-Clusters Config Connector verwenden möchten, gehen Sie so vor:
gcloud
Prüfen Sie, ob das Config Connector-Add-on installiert ist. Sie sollten eine Version von Config Connector über 1.47.0 haben.
Folgen Sie der Anleitung zu Config Connector, um ein Dienstkonto zu erstellen.
Binden Sie die IAM-Rolle
gkehub.admin
an dieses Dienstkonto, damit Ihr Config Connector dieses Dienstkonto für den Zugriff auf die Fleet API verwenden kann:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"
Wenn Sie einen neuen Cluster mit Config Connector erstellen und dann registrieren möchten, müssen Sie auch die Rolle
roles/container.admin
an das Dienstkonto binden, damit der Config Connector-Controller mit diesem Dienstkonto auf die GKE API zugreifen kann, um einen Cluster zu erstellen.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"
Ersetzen Sie Folgendes:
- FLEET_HOST_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Sie Cluster registrieren möchten. Informationen zum Ermitteln dieses Werts
- SERVICE_ACCOUNT_NAME der Anzeigename ist, den Sie für das [Dienstkonto] auswählen.
Folgen Sie der Config Connector-Anweisung, Ihren Config Connector mit diesem Dienstkonto zu konfigurieren.
Nächste Schritte
Folgen Sie der Anleitung zum Registrieren eines Clusters.