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 diesen Task 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 dem Befehl
gcloud components updateab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von IAM-Dienstkonten und -Rollen benötigen:
-
Sicherheitsadministrator (
roles/iam.securityAdmin) für das Clusterprojekt -
Dienstkonten in einem separaten Projekt konfigurieren:
Sicherheitsadministrator (
roles/iam.securityAdmin) für das Dienstkontoprojekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Mindestrolle für GKE zuweisen
GKE verwendet IAM-Dienstkonten, die an Ihre Knoten angehängt sind, um Systemaufgaben wie Logging und Monitoring auszuführen. Diese Knoten-Dienstkonten müssen in Ihrem Projekt mindestens die Rolle Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) haben. Standardmäßig verwendet GKE das Compute Engine-Standarddienstkonto, das automatisch in Ihrem Projekt erstellt wird, als Knotendienstkonto.
Wenn Ihre Organisation die Einschränkung der Organisationsrichtlinie iam.automaticIamGrantsForDefaultServiceAccounts erzwingt, erhält das Compute Engine-Standarddienstkonto in Ihrem Projekt möglicherweise nicht automatisch die erforderlichen Berechtigungen für GKE.
In den folgenden Abschnitten wird beschrieben, wie Sie dem Compute Engine-Standarddienstkonto oder einem neuen benutzerdefinierten Dienstkonto, das Sie erstellen, die Rolle roles/container.defaultNodeServiceAccount zuweisen.
Compute Engine-Standarddienstkonto konfigurieren
So weisen Sie dem Compute Engine-Standarddienstkonto die Rolle roles/container.defaultNodeServiceAccount zu:
Console
- Rufen Sie die Seite Willkommen auf:
- Klicken Sie im Feld Projektnummer auf In die Zwischenablage kopieren.
- Rufen Sie die IAM-Seite auf.
- Klicken Sie auf Zugriffsrechte erteilen.
- Geben Sie im Feld Neue Hauptkonten den folgenden Wert an:
Ersetzen SiePROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERdurch die kopierte Projektnummer. - Wählen Sie im Menü Rolle auswählen die Rolle Kubernetes Engine Default Node Service Account aus.
- Klicken Sie auf Speichern.
gcloud
- So finden Sie Ihre Google Cloud Projektnummer:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Ersetzen Sie
PROJECT_IDdurch Ihre Projekt-ID.Die Ausgabe sieht etwa so aus:
12345678901
- Weisen Sie dem Compute Engine-Standarddienstkonto die Rolle
roles/container.defaultNodeServiceAccountzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Ersetzen Sie
PROJECT_NUMBERdurch die Projektnummer aus dem vorherigen Schritt.
Benutzerdefiniertes Knotendienstkonto konfigurieren
So erstellen Sie ein benutzerdefiniertes Dienstkonto und weisen ihm die erforderliche Rolle für GKE zu:
Console
- Rufen Sie die Seite Dienstkonten auf:
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie einen Namen für das Dienstkonto ein. Im Feld Dienstkonto-ID wird automatisch eine eindeutige ID für das Dienstkonto auf Grundlage des Namens generiert.
- Klicken Sie auf Erstellen und fortfahren.
- Wählen Sie im Menü Rolle auswählen die Rolle Kubernetes Engine Default Node Service Account aus.
- Klicken Sie auf Fertig.
gcloud
- Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SA_NAME
Ersetzen Sie
SA_NAMEdurch einen eindeutigen Namen, der das Dienstkonto identifiziert. - Weisen Sie dem Dienstkonto die Rolle Kubernetes Engine Default Node Service Account (
roles/container.defaultNodeServiceAccount) zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .SA_NAME: Name des von Ihnen erstellten Dienstkontos.
Terraform
Erstellen Sie ein IAM-Dienstkonto und weisen Sie ihm die Rolle roles/container.defaultNodeServiceAccount für das Projekt zu:
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
- Laden Sie zum Erstellen des Dienstkontos die folgende Ressource als
service-account.yamlherunter:Ersetzen Sie Folgendes:
[SA_NAME]ist der Name des neuen Dienstkontos.[DISPLAY_NAME]: Ein Anzeigename für das Dienstkonto.
- Erstellen Sie das Dienstkonto:
kubectl apply -f service-account.yaml
- Wenden Sie die Rolle
roles/logging.logWriterauf das Dienstkonto an:- Laden Sie die folgende Ressource als Datei
policy-logging.yamlherunter.Ersetzen Sie Folgendes:
[SA_NAME]ist der Name des Dienstkontos.[PROJECT_ID]: Projekt-ID in Google Cloud .
- Wenden Sie die Rolle auf das Dienstkonto an:
kubectl apply -f policy-logging.yaml
- Laden Sie die folgende Ressource als Datei
- Wenden Sie die Rolle
roles/monitoring.metricWriterauf das Dienstkonto an:- Laden Sie die folgende Ressource als Datei
policy-metrics-writer.yamlherunter. Ersetzen Sie[SA_NAME]und[PROJECT_ID]durch Ihre eigenen Informationen.Ersetzen Sie Folgendes:
[SA_NAME]ist der Name des Dienstkontos.[PROJECT_ID]: Projekt-ID in Google Cloud .
- Wenden Sie die Rolle auf das Dienstkonto an:
kubectl apply -f policy-metrics-writer.yaml
- Laden Sie die folgende Ressource als Datei
- Wenden Sie die Rolle
roles/monitoring.viewerauf das Dienstkonto an:- Laden Sie die folgende Ressource als Datei
policy-monitoring.yamlherunter.Ersetzen Sie Folgendes:
[SA_NAME]ist der Name des Dienstkontos.[PROJECT_ID]: Projekt-ID in Google Cloud .
- Wenden Sie die Rolle auf das Dienstkonto an:
kubectl apply -f policy-monitoring.yaml
- Laden Sie die folgende Ressource als Datei
- Wenden Sie die Rolle
roles/autoscaling.metricsWriterauf das Dienstkonto an:- Laden Sie die folgende Ressource als Datei
policy-autoscaling-metrics-writer.yamlherunter.Ersetzen Sie Folgendes:
[SA_NAME]ist der Name des Dienstkontos.[PROJECT_ID]: Projekt-ID in Google Cloud .
- Wenden Sie die Rolle auf das Dienstkonto an:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Laden Sie die folgende Ressource als Datei
Sie können dieses Dienstkonto auch für Ressourcen in anderen Projekten verwenden. Eine Anleitung finden Sie unter Identitätswechsel für Dienstkonten über Projekte hinweg aktivieren.
Hauptkonten erlauben, benutzerdefinierte Dienstkonten anzuhängen
Sie können ein benutzerdefiniertes Dienstkonto anhängen, wenn Sie einen Cluster oder einen Knotenpool erstellen. Wenn ein Hauptkonto (z. B. ein Plattformadministrator) ein benutzerdefiniertes Dienstkonto zum Erstellen von GKE-Ressourcen verwenden soll, weisen Sie diesem Hauptkonto die Rolle Dienstkontonutzer (roles/iam.serviceAccountUser) für das benutzerdefinierte Dienstkonto zu. Wählen Sie eine der folgenden Optionen aus, um diese Rolle zuzuweisen:
Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie in der Ressourcenauswahl das Projekt aus, das Ihr benutzerdefiniertes Dienstkonto enthält.
Klicken Sie auf das Kästchen für das benutzerdefinierte Dienstkonto, das Sie für die Verwendung mit GKE-Knoten erstellt haben.
Klicken Sie auf Zugriff verwalten. Der Bereich Zugriff verwalten wird geöffnet.
Klicken Sie auf Hauptkonto hinzufügen. Der Bereich Zugriff gewähren wird geöffnet.
Geben Sie im Feld Neue Hauptkonten das Hauptkonto an, z. B. eine Administratorgruppe.
Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkontonutzer aus.
Klicken Sie auf Speichern. Der Bereich Zugriff erlauben wird geschlossen.
Schließen Sie den Bereich Zugriff verwalten.
gcloud
Weisen Sie die Rolle roles/iam.serviceAccountUser zu:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Ersetzen Sie Folgendes:
SA_NAME: der Name des benutzerdefinierten Dienstkontos.SERVICE_ACCOUNT_PROJECT_ID: die Projekt-ID, die das benutzerdefinierte Dienstkonto enthält.PRINCIPAL: die Hauptkonto-ID, z. B.user:baklavainthebalkans@example.com.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Wenden Sie die Rolle iam.serviceAccountUser auf Ihr Dienstkonto an. Laden Sie die folgende Ressource als Datei policy-service-account-user.yaml herunter. Ersetzen Sie [SA_NAME] und [PROJECT_ID] durch Ihre eigenen Informationen.
kubectl apply -f policy-service-account-user.yaml
Nachdem Sie die Rolle für das Dienstkonto gewährt haben, können diese Hauptkonten das Dienstkonto zum Erstellen von Clustern und Knotenpools verwenden. Weitere Informationen finden Sie in den folgenden Dokumenten:
Dienstkontonutzung projektübergreifend konfigurieren
Wenn sich das Dienstkonto des Knotens nicht im selben Projekt wie Ihr Cluster befindet, benötigen Dienst-Agents im Clusterprojekt zusätzliche Berechtigungen für das Dienstkonto. Weitere Informationen finden Sie unter Knoten-Dienstkonten und Projekt-Dienst-Agents.
So weisen Sie die erforderlichen Rollen Dienstkonten für Knoten zu, die sich nicht in Ihrem Clusterprojekt befinden:
- Wenn Sie das projektübergreifende Anhängen von Dienstkonten aktivieren möchten, aktualisieren Sie Ihre Organisationsrichtlinien.
Wählen Sie eine der folgenden Optionen aus, um den Dienst-Agents in Ihrem Clusterprojekt die erforderlichen Rollen für das benutzerdefinierte Dienstkonto zuzuweisen:
Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
Aktivieren Sie das Kästchen für das benutzerdefinierte Dienstkonto, das Sie für die Verwendung mit GKE-Knoten erstellt haben.
Klicken Sie auf Zugriff verwalten. Der Bereich Zugriff verwalten wird geöffnet.
Weisen Sie dem Compute Engine-Dienst-Agent in Ihrem Clusterprojekt die Rolle „Ersteller von Dienstkonto-Tokens“ zu:
- Klicken Sie im Bereich Zugriff verwalten auf Hauptkonto hinzufügen. Der Bereich Zugriff erlauben wird geöffnet.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Compute Engine-Dienst-Agents in Ihrem Clusterprojekt an:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comErsetzen Sie
CLUSTER_PROJECT_NUMBERdurch die Projektnummer Ihres Clusterprojekts.Wählen Sie im Menü Rolle auswählen die Rolle Ersteller von Dienstkonto-Tokens aus.
Klicken Sie auf Speichern. Der Bereich Zugriff erlauben wird geschlossen.
Weisen Sie dem GKE-Dienst-Agent in Ihrem Clusterprojekt die Rolle „Dienstkontonutzer“ zu:
- Klicken Sie im Bereich Zugriff verwalten auf Hauptkonto hinzufügen. Der Bereich Zugriff erlauben wird geöffnet.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des GKE-Dienst-Agents in Ihrem Clusterprojekt an:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comWählen Sie im Menü Rolle auswählen die Rolle Dienstkontonutzer aus.
Klicken Sie auf Speichern. Der Bereich Zugriff erlauben wird geschlossen.
Schließen Sie den Bereich Zugriff verwalten.
gcloud
Rufen Sie die Projektnummer Ihres Clusterprojekts ab:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Ersetzen Sie
CLUSTER_PROJECT_IDdurch die Projekt-ID Ihres Clusterprojekts.Die Ausgabe ähnelt
123456789.Weisen Sie dem Compute Engine-Dienst-Agent in Ihrem Clusterprojekt die Rolle
roles/iam.serviceAccountTokenCreatorfür das benutzerdefinierte Dienstkonto zu:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorErsetzen Sie Folgendes:
SA_NAME: der Name des benutzerdefinierten Dienstkontos.SERVICE_ACCOUNT_PROJECT_ID: die Projekt-ID des Projekts, das Ihr benutzerdefiniertes Dienstkonto enthält.CLUSTER_PROJECT_NUMBER: die Projektnummer Ihres Clusterprojekts.
Weisen Sie dem GKE-Dienst-Agent in Ihrem Clusterprojekt die Rolle
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto zu:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Image-Pulls aus privaten Repositories zulassen
Wenn Sie Images in privaten Artifact Registry-Repositories haben, müssen Sie Ihrem Knoten-Dienstkonto Zugriff auf diese Repositories gewähren. Auch wenn Sie das Compute Engine-Standarddienstkonto verwenden, müssen Sie dem Dienstkonto möglicherweise Zugriff auf Ihr Repository gewähren, wenn sich das Repository in einem anderen Projekt befindet.
Wenn Sie private Images aus der Artifact Registry abrufen möchten, weisen Sie Ihrem Knotendienstkonto die Rolle „Artifact Registry-Leser“ (roles/artifactregistry.reader) für das Repository zu.
Console
Rufen Sie in der Google Cloud Console die Seite Repositories auf.
Klicken Sie das Kästchen für Ihr Repository an.
Klicken Sie auf Infofeld anzeigen. Der Bereich mit den Repository-Informationen wird geöffnet.
Klicken Sie auf dem Tab Berechtigungen auf Hauptkonto hinzufügen. Der Bereich Zugriff erlauben wird geöffnet.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse Ihres Knotendienstkontos an.
Klicken Sie auf Rolle auswählen, um das Dialogfeld zur Rollenauswahl zu öffnen.
Wählen Sie die Rolle Artifact Registry-Leser aus.
Klicken Sie auf Speichern.
gcloud
Weisen Sie dem Repository die Rolle roles/artifactregistry.reader zu:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Ersetzen Sie Folgendes:
REPOSITORY_NAME: der Name des Artifact Registry-Repositorys.SERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse Ihres Knotendienstkontos.REPOSITORY_PROJECT_ID: die Projekt-ID des Projekts, das Ihr Repository enthält.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Speichern Sie das folgende Manifest als
policy-artifact-registry-reader.yaml:Ersetzen Sie Folgendes:
- SA_NAME: Der Name Ihres IAM-Dienstkontos.
- PROJECT_ID: Projekt-ID in Google Cloud .
- REPOSITORY_NAME: der Name Ihres Artifact Registry-Repositorys
Weisen Sie dem Dienstkonto die Rolle „Artifact Registry-Leser” zu:
kubectl apply -f policy-artifact-registry-reader.yaml
Nächste Schritte
- Autopilot-Cluster erstellen
- Regionalen Cluster erstellen
- Knotenpool einem Standardcluster hinzufügen