Voraussetzungen für die Registrierung eines Clusters

Auf dieser Seite werden die Voraussetzungen und Anforderungen für die Registrierung eines Kubernetes-Clusters bei einer Google Cloud-Flotte beschrieben, einschließlich der Netzwerk-, Google Cloud- und Kubernetes-Clusterkonfiguration sowie Ressourcenanforderungen für den Connect-Agent.

Alle Registrierungen

Für die manuelle Registrierung von Clustern jeglicher Art müssen folgende Voraussetzungen erfüllt sein.

Befehlszeilentools installieren

Die folgenden Befehlszeilentools müssen installiert sein. Wenn Sie Cloud Shell als Shell-Umgebung für die Interaktion mit Google Cloud verwenden, sind diese Tools für Sie installiert.

gcloud-Befehlszeilentool installieren

Das gcloud-Befehlszeilentool ist die Befehlszeile für Google Cloud und ist im Cloud SDK enthalten. Sie können Cluster mit dem gcloud-Befehlszeilentool oder abhängig vom Clustertyp mit anderen Tools wie Terraform oder der Cloud Console registrieren. Selbst wenn Sie es nicht für die Clusterregistrierung verwenden, ist gcloud für viele der anderen Einrichtungsschritte auf dieser Seite erforderlich oder nützlich.

  1. Installieren Sie das Cloud SDK entsprechend der Installationsanleitung, falls noch nicht geschehen. Sie benötigen die Cloud SDK-Version 281.0.0 oder höher.

  2. Führen Sie den folgenden Befehl aus, um sich in Google Cloud anzumelden:

gcloud auth login
  1. (Optional) Installieren Sie die Komponente gcloud beta, wenn Sie die Alpha- oder Beta-Connect-Features testen möchten:
 gcloud components install beta 

kubectl installieren

kubectl ist zwar zum Registrieren eines Clusters nicht erforderlich, wird aber möglicherweise benötigt, um dem Nutzer, der den Cluster registriert (wenn er nicht der Clusterinhaber ist), die erforderlichen RBAC-Berechtigungen zu erteilen sowie für andere plattformspezifische Einrichtungen. Sie benötigen eine kubectl-Version, die nicht älter als die unterstützte Kubernetes-Mindestversion von Google Kubernetes Engine (GKE) ist.

Wir empfehlen die Installation von kubectl mit dem Cloud SDK.

So prüfen Sie die Version von kubectl:

kubectl version

Die Clientversion wird durch gitVersion der Ausgabe angegeben.

So installieren Sie kubectl:

gcloud components install kubectl

APIs aktivieren

Sie müssen in Ihrem Google Cloud-Projekt die folgenden APIs aktivieren:

  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • cloudresourcemanager.googleapis.com

Pods in Ihrem Cluster müssen die Adressen googleapis.com und gkeconnect.googleapis.com entweder direkt oder über einen konfigurierten Proxyserver erreichen können.

Wenn Sie für Ihre Registrierung Workload Identity aktivieren möchten, müssen Sie außerdem Folgendes aktivieren:

  • iam.googleapis.com

Nicht-Projektinhabern muss die Berechtigung serviceusage.services.enable erteilt werden, damit sie APIs aktivieren können.

gcloud

Aktivieren Sie diese APIs mit folgendem Befehl:

gcloud services enable \
 --project=[FLEET_HOST_PROJECT_ID] \
 container.googleapis.com \
 gkeconnect.googleapis.com \
 gkehub.googleapis.com \
 cloudresourcemanager.googleapis.com \
 iam.googleapis.com

Dabei gilt:

Wenn Sie Workload Identity der Flotte nicht aktivieren möchten, können Sie iam.googleapis.com weglassen.

Um APIs aufzulisten, die Sie bereits in Ihren Projekten aktiviert haben, folgen Sie den Anleitungen unter Dienste auflisten in der Dokumentation zur Dienstnutzung.

Nutzer für die Registrierung des Clusters die erforderlichen IAM-Rollen zuweisen

Mit roles/owner in Ihrem Projekt haben Sie die vollständige Kontrolle und können alle Registrierungsaufgaben ausführen.

Wenn in Ihrem Projekt keine roles/owner vorhanden sind, benötigen Sie bestimmte IAM-Rollen, damit Sie eine Verbindung von Clustern zu Google herstellen können. Weitere Informationen dazu finden Sie unter IAM-Rollen verbinden.

Mit den folgenden IAM-Rollen können Sie ein Dienstkonto nutzen, um sich Cluster zu registrieren und eine Verbindung zu Clustern herzustellen:

  • roles/gkehub.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountKeyAdmin
  • roles/resourcemanager.projectIamAdmin

Nur für GKE-Cluster können Sie auch die folgende Rolle hinzufügen, um Administratorberechtigungen für den Cluster zu erhalten, falls Sie diese noch nicht haben. Ihr Nutzerkonto hat sie wahrscheinlich, wenn Sie den Cluster erstellt haben:

  • roles/container.admin

Bei GKE-Clustern enthält diese IAM-Rolle die Rolle cluster-admin der rollenbasierten Zugriffssteuerung von Kubernetes. In anderen Clusterumgebungen müssen Sie diese RBAC-Rolle mithilfe von kubectl zuweisen, wie im folgenden Abschnitt beschrieben. Weitere Informationen zur Beziehung zwischen IAM- und RBAC-Rollen in GKE finden Sie in der GKE-Dokumentation.

Wenn Sie einen Cluster mit Workload Identity registrieren, benötigen Sie lediglich die folgende IAM-Rolle:

  • roles/gkehub.admin

gcloud

Führen Sie den folgenden Befehl aus, um diese Rollen zuzuweisen:

gcloud projects add-iam-policy-binding [FLEET_HOST_PROJECT_ID] \
 --member user:[GCP_EMAIL_ADDRESS] \
 --role=roles/gkehub.admin \
 --role=roles/iam.serviceAccountAdmin \
 --role=roles/iam.serviceAccountKeyAdmin \
 --role=roles/resourcemanager.projectIamAdmin

Dabei gilt:

  • [FLEET_HOST_PROJECT_ID] ist die ID des Google Cloud-Projekts, in dem Sie Cluster registrieren möchten. Informationen zum Ermitteln dieses Werts
  • [GCP_EMAIL_ADDRESS] ist die Kontoregistrierung, mit der sich Nutzer bei Google Cloud anmelden.

Weitere Informationen zum Zuweisen von IAM-Rollen finden Sie in der IAM-Dokumentation unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Anderen Nutzern Rollen mit Lesezugriff erteilen

Authentifizierte Nutzer mit den folgenden Rollen können registrierte Nutzercluster in der Cloud Console aufrufen. Diese Rollen bieten nur Lesezugriff:

  • roles/gkehub.viewer
  • roles/container.viewer

gcloud

Führen Sie den folgenden Befehl aus, um einem Nutzer die erforderlichen Rollen zuzuweisen:

gcloud projects add-iam-policy-binding [FLEET_HOST_PROJECT_ID] \
 --member user:[USER_EMAIL_ADDRESS] \
 --role roles/gkehub.viewer \
 --role=roles/container.viewer

Dabei gilt:

  • [FLEET_HOST_PROJECT_ID] ist die ID des Google Cloud-Projekts, in dem Sie Cluster registrieren möchten. Informationen zum Ermitteln dieses Werts
  • [USER_EMAIL_ADDRESS] ist die E-Mail-Adresse eines authentifizierten Nutzers.

Nutzer für die Registrierung des Clusters die RBAC-Rolle „cluster-admin“ zuweisen

Die RBAC-ClusterRole (Role-based Access Control) cluster-admin gewährt die erforderlichen Berechtigungen zum Registrieren Ihres Clusters. Wenn sich der Cluster, den Sie registrieren möchten, in Google Cloud befindet, erhalten Sie die gleichen Berechtigungen unter Verwendung der IAM-Rolle roles/container.admin, wie unter Einrichtung und Konfiguration von Google Cloud beschrieben.

kubectl

Sie haben diese Rolle in der Regel, wenn Sie den Cluster erstellen. Überprüfen Sie dies mit folgendem Befehl:

kubectl auth can-i '*' '*' --all-namespaces

Wenn Sie oder ein anderer Nutzer die Rolle benötigen, erstellen Sie im Cluster eine Ressource "ClusterRoleBinding":

kubectl create clusterrolebinding [BINDING_NAME] --clusterrole cluster-admin --user [USER] 

Dabei gilt:

  • [BINDING_NAME] ist ein Name, den Sie für die Ressource „ClusterRoleBinding“ auswählen.
  • [USER] ist die Identität, die zur Authentifizierung beim Cluster verwendet wird.

Weitere Informationen zur Rolle cluster-admin finden Sie in der Kubernetes-Dokumentation.

GKE-Cluster in Google Cloud.

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.

GKE Workload Identity aktivieren

Wenn Sie GKE-Cluster mit aktivierter Workload Identity der Flotte registrieren möchten, muss GKE Workload Identity vor der Registrierung im Cluster aktiviert werden. Die Registrierung eines GKE-Clusters mit Workload Identity der Flotte ohne Aktivierung von GKE Workload Identity im Cluster kann zu Inkonsistenzen bei der Bestätigung der Identität durch Arbeitslasten im Cluster führen. Diese Konfiguration wird nicht unterstützt. Weitere Informationen zu den Vorteilen der Registrierung mithilfe von Workload Identity der Flotte finden Sie unter Cluster registrieren.

gcloud

Führen Sie zum Prüfen, ob Workload Identity für Ihren GKE-Cluster aktiviert ist, den folgenden Befehl aus, um den Workload Identity-Pool des Clusters aufzulisten:

gcloud container clusters describe GKE_CLUSTER --format="value(workloadIdentityConfig.workloadPool)"

Dabei gilt:

  • GKE_CLUSTER ist der name des GKE-Clusters.

Wenn ein Ergebnis ähnlich dem folgenden angezeigt wird, ist Workload Identity bereits auf Ihrem GKE-Cluster aktiviert:

GKE_PROJECT_ID.svc.id.goog

Wenn keine Ergebnisse vorhanden sind, ist Workload Identity nicht aktiviert. Folgen Sie der Anleitung in Workload Identity aktivieren, um Workload Identity zu aktivieren.

Berechtigungen zum Registrieren eines Clusters in einem anderen Projekt erteilen

Für die Registrierung eines GKE-Clusters bei der Flotte des zugehörigen Projekts sind lediglich die unter Alle Registrierungen beschriebenen Berechtigungen erforderlich. 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 jedoch 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 dem gcloud-Tool oder der 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 diesen Befehl aus:

gcloud projects get-iam-policy [GKE_PROJECT_ID]

Console

  1. Nachdem Sie das Projekt Ihres Clusters ausgewählt haben, rufen Sie die Seite IAM & Verwaltung in der Cloud Console auf.

Weiter zur Seite "IAM & Verwaltung" 1. Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen, um die vollständige Richtlinie anzusehen, einschließlich Dienst-Agents.

Wird gcp-sa-gkehub angezeigt, sollte das Format service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com lauten. Beispiel:

  - members:
    - serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
    role: roles/gkehub.serviceAgent

Wenn der Dienst-Agent nicht in der IAM-Richtlinie des Projekts aufgeführt ist, gehen Sie so vor, um die erforderlichen Berechtigungen zu aktualisieren:

gcloud

  1. Damit gcp-sa-gkehub die Rolle gkehub.serviceAgent zugewiesen werden kann, muss dieses Dienstkonto vorhanden sein. Wenn Sie bereits Cluster in diesem Projekt registriert haben, sollte dieses Dienstkonto vorhanden sein. Sehen Sie sich dazu die IAM-Richtlinie für das Hostprojekt der Flotte an:

    gcloud projects get-iam-policy [FLEET_HOST_PROJECT_ID]
    
  2. 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
    
  3. Führen Sie den folgenden Befehl aus, um dem Dienstkonto in beiden Projekten die Rolle roles/gkehub.serviceAgent 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

    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
  4. 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 der Rolle gkehub.serviceAgent angezeigt wird, wurde die Rollenbindung gewährt. Beispiel:

    - members:
      - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
      role: roles/gkehub.serviceAgent
    

Identität für die Verwendung durch den Connect-Agent einrichten

Während bei den meisten Registrierungsoptionen für GKE-Cluster in Google Cloud der Connect-Agent nicht auf Ihren Clustern installiert wird, müssen Sie den Agent derzeit installieren, um das Connect-Gateway zu verwenden. Dazu können Sie sich mit dem gcloud-Befehlszeilentool registrieren. Der Connect Agent benötigt eine Identität, um sich bei Google Cloud zu authentifizieren.

Dienstkonto für Terraform konfigurieren

Wenn Sie Terraform verwenden möchten, um einen Google Kubernetes Engine-Cluster zu registrieren, müssen Sie ein Dienstkonto erstellen, mit dem Terraform auf die Fleet API zugreifen kann, um eine Mitgliedschaft zu erstellen.

gcloud

  1. So erstellen Sie ein Dienstkonto:

    gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] --project=[FLEET_HOST_PROJECT_ID]
  2. Binden Sie die IAM-Rolle gkehub.admin an das Dienstkonto, damit Terraform sie 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"
    

    Dabei gilt:

  3. 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 Config Connector zum Registrieren eines GKE-Clusters verwenden möchten, gehen Sie so vor:

gcloud

  1. Prüfen Sie, ob das Config Connector-Add-on installiert ist. Sie benötigen eine Config Connector-Version, die höher als 1.47.0 ist.

  2. Folgen Sie der Anleitung zu Config Connector, um ein Dienstkonto zu erstellen.

  3. Binden Sie die IAM-Rolle gkehub.admin an dieses Dienstkonto, damit Ihr Config Connector mit diesem Dienstkonto auf die Fleet API zugreifen 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"
    

    Dabei gilt:

  4. Folgen Sie der Config Connector-Anweisung, Ihren Config Connector mit diesem Dienstkonto zu konfigurieren.

Cluster außerhalb von Google Cloud

Für alle manuellen Registrierungen außerhalb von Google Cloud, z. B. für die Registrierung angehängter Cluster, sind zusätzlich zu den Voraussetzungen für alle Registrierungen folgende Schritte erforderlich.

Netzwerkverbindung sicherstellen

Um den Cluster registrieren zu können, müssen die folgenden Domains über Ihren Kubernetes-Cluster erreichbar sein.

  • cloudresourcemanager.googleapis.com zum Auflösen von Metadaten in Bezug auf das Google Cloud-Projekt, mit dem der Cluster verbunden ist.
  • oauth2.googleapis.com zum Abrufen kurzlebiger OAuth-Tokens für Agent-Vorgänge in Bezug auf gkeconnect.googleapis.com.
  • gkeconnect.googleapis.com zur Einrichtung des Kanals, der zum Empfangen von Anfragen von Google Cloud und für die Ausgabe von Antworten verwendet wird.
  • gkehub.googleapis.com zum Erstellen von Ressourcen für die Google Cloud-seitige Flotten-Mitgliedschaft, die dem Cluster entsprechen, den Sie mit Google Cloud verbinden.
  • www.googleapis.com zum Authentifizieren von Dienst-Tokens aus eingehenden Google Cloud-Dienstanfragen.
  • gcr.io zum Abrufen des GKE Connect-Agent-Images.

Wenn Sie den Cluster mit Workload Identity registrieren möchten, müssen auch die folgenden Domains erreichbar sein:

  • securetoken.googleapis.com
  • iamcredentials.googleapis.com
  • sts.googleapis.com

Wenn Sie einen Proxy für Connect verwenden, müssen Sie auch die Zulassungsliste des Proxys mit den relevanten Domains aktualisieren.

Wenn Sie gcloud zur Registrierung Ihres Kubernetes-Clusters nutzen, müssen diese Domains auch in der Umgebung erreichbar sein, in der Sie die gcloud-Befehle ausführen.

VPC Service Controls verwenden

Wenn Sie VPC Service Controls für zusätzliche Datensicherheit in Ihrer Anwendung verwenden möchten, müssen Sie darauf achten, dass die folgenden Dienste in Ihrem Dienstperimeter enthalten sind:

  • Resource Manager API (cloudresourcemanager.googleapis.com)
  • GKE Connect API (gkeconnect.googleapis.com)
  • Fleet API (gkehub.googleapis.com)

Wenn Sie Ihren Cluster bei aktivierter Workload Identity der Flotte registrieren möchten, benötigen Sie außerdem die folgenden Dienste:

  • IAM Service Account Credentials API (iamcredentials.googleapis.com)
  • Security Token Service API (sts.googleapis.com)

Außerdem müssen Sie eine private Verbindung für den Zugriff auf die erforderlichen APIs einrichten. Informationen dazu finden Sie unter Private Verbindung einrichten.

Identität einrichten

Für alle manuellen Clusterregistrierungsoptionen außerhalb von Google Cloud müssen Sie die Authentifizierung bei Google konfigurieren. Sie können einen Cluster mit Workload Identity der Flotte registrieren oder über ein Google Cloud-Dienstkonto registrieren.

Anthos-Cluster auf VMware, Anthos-Cluster auf Bare Metal und Anthos-Cluster auf AWS werden beim Erstellen des Clusters automatisch in Ihrer Projektflotte registriert. Workload Identity der Flotte ist dabei mit Version 1.8 oder höher aktiviert. Beachten Sie, dass Sie für diese Clustertypen nach wie vor ein Dienstkonto für die Registrierung einrichten müssen. Nach der ersten Registrierung verwendet der Connect Agent Workload Identity der Flotte, um sich bei Google zu authentifizieren.

Angehängte Cluster können mit aktivierter Workload Identity der Flotte aktiviert werden, wenn der Cluster die unten beschriebenen Voraussetzungen für angehängte Cluster erfüllt. Registrieren Sie andernfalls angehängte Cluster bei einem Google Cloud-Dienstkonto, um sich zu authentifizieren.

Google Cloud-Dienstkonto mit gcloud erstellen

Wenn Sie einen Cluster manuell mit einem Google Cloud-Dienstkonto registrieren möchten, benötigen Sie eine JSON-Datei mit den Anmeldedaten des Dienstkontos. Um das Prinzip der geringsten Berechtigung anzuwenden, empfehlen wir, dass Sie für jeden registrierten Kubernetes-Cluster ein eigenes Dienstkonto erstellen und nur IAM-Rollen für den entsprechenden Cluster daran binden.

Um diese Datei zu erstellen, führen Sie die folgenden Schritte aus:

gcloud

Erstellen Sie ein Dienstkonto mit dem folgenden Befehl:

gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] --project=[FLEET_HOST_PROJECT_ID]

Um alle Dienstkonten eines Projekts aufzulisten, führen Sie folgenden Befehl aus:

gcloud iam service-accounts list --project=[FLEET_HOST_PROJECT_ID]

Wenn Sie für jeden registrierten Kubernetes-Cluster ein eigenes Dienstkonto erstellen, binden Sie die IAM-Rolle „gkehub.connect“ an das Dienstkonto des entsprechenden Clusters mit einer IAM-Bedingung für den Namen der Mitgliedschaft des Clusters:

MEMBERSHIP_NAME=[MEMBERSHIP_NAME]
FLEET_HOST_PROJECT_ID=[FLEET_HOST_PROJECT_ID]
SERVICE_ACCOUNT_NAME=[SERVICE_ACCOUNT_NAME]
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.connect" \
 --condition "expression=resource.name == \
'projects/${FLEET_HOST_PROJECT_ID}/locations/global/memberships/${MEMBERSHIP_NAME}',\
title=bind-${SERVICE_ACCOUNT_NAME}-to-${MEMBERSHIP_NAME}"

Alternativ können Sie die Rolle an das Dienstkonto für alle Cluster im Projekt ohne die Bedingung binden.

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.connect"

Laden Sie die JSON-Datei mit dem privaten Schlüssel des Dienstkontos herunter. Sie verwenden diese Datei beim Registrieren eines Clusters:

FLEET_HOST_PROJECT_ID=[FLEET_HOST_PROJECT_ID]
gcloud iam service-accounts keys create [LOCAL_KEY_PATH] \
  --iam-account=[SERVICE_ACCOUNT_NAME]@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com \
  --project=${FLEET_HOST_PROJECT_ID}

Dabei gilt:

  • [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] ist der Anzeigename, den Sie für das Dienstkonto auswählen.
  • [MEMBERSHIP_NAME] ist der Name der Mitgliedschaft, den Sie zur eindeutigen Identifizierung des Clusters bei der Registrierung auswählen.
  • [LOCAL_KEY_PATH] ist ein lokaler Dateipfad, unter dem Sie den privaten Schlüssel des Dienstkontos, eine JSON-Datei, speichern. Es wird empfohlen, die Datei nach dem Namen des Dienstkontos und Ihrer Projekt-ID zu benennen. Beispiel: /tmp/creds/[SERVICE_ACCOUNT_NAME]-[FLEET_HOST_PROJECT_ID].json.

Voraussetzungen für angehängten Cluster

Abhängig vom Typ des externen Clusters, den Sie als angehängten Cluster registrieren möchten, müssen Sie möglicherweise einige zusätzliche Anforderungen erfüllen, um den Connect Agent zu installieren und/oder Workload Identity der Flotte zu verwenden.

Sicherheitskontextbeschränkungen (Security Context Constraints, SCC) (OpenShift-Cluster) konfigurieren

Auf den Clustern OpenShift OKE und OKD können Administratoren SCCs verwenden, um Berechtigungen für Pods zu steuern. Damit die Installation von Connect Agent im Cluster möglich ist, müssen Sie einen benutzerdefinierten SCC erstellen.

Die folgende SCC-Definition gibt eine Reihe von Bedingungen an, mit denen der Connect Agent ausgeführt werden muss, um in den Cluster aufgenommen zu werden:

# Connect Agent SCC
apiVersion: v1
kind: SecurityContextConstraints
metadata:
  name: gke-connect-scc
allowPrivilegeEscalation: false
# This is redundant with non-root + disallow privilege escalation,
# but we provide it for defense in depth.
requiredDropCapabilities:
- ALL
runAsUser:
  type: MustRunAsNonRoot
seLinuxContext:
  type: RunAsAny
supplementalGroups:
  type: MustRunAs
  ranges:
  - min: 1
    max: 65535
fsGroup:
  type: MustRunAs
  ranges:
  - min: 1
    max: 65535
volumes:
- secret
- projected
readOnlyRootFilesystem: true
seccompProfiles:
- docker/default
users:
groups:
  # Grants all service accounts in the gke-connect namespace access to this SCC
  - system:serviceaccounts:gke-connect

Wenn Sie Ihre SCC-Definition gespeichert haben, gke-connect-scc.yaml, verwenden Sie das OpenShiftoc-Befehlszeilentool zum Erstellen desgke-connect-scc SCC für den Cluster:

$ oc create -f gke-connect-scc.yaml

Prüfen Sie mit dem folgenden oc-Befehl, ob der benutzerdefinierte SCC erstellt wurde:

$ oc get scc | grep gke-connect-scc

Anforderungen für Workload Identity der Flotte

Sie können angehängte Cluster mit aktivierter Workload Identity der Flotte registrieren, wenn Ihre Plattform einen öffentlichen OIDC-Endpunkt für den Cluster erstellt (oder Sie die Möglichkeit haben, einen zu erstellen) oder wenn Sie die Erkennung des Dienstkontoausstellers aktiviert haben. Wenn Sie diese Anforderungen nicht erfüllen, müssen Sie angehängte Cluster zur Authentifizierung bei einem Google Cloud-Dienstkonto registrieren.

Informationen zu bestimmten Clustertypen finden Sie hier:

  • OpenShift-Cluster: Können bei aktivierter Workload Identity der Flotte registriert werden, nachdem Sie wie oben beschrieben Ihre benutzerdefinierte SCC konfiguriert haben.
  • kind-Cluster: Damit Workload Identity der Flotte verwendet werden kann, muss die Erkennung des Dienstkontoausstellers aktiviert sein. Ab Kubernetes Version 1.20 ist diese Option standardmäßig aktiviert. Wenn Sie dieses Feature aktivieren müssen, folgen Sie der Anleitung unter Volume-Projektion für Dienstkontotoken. Die Erkennung des Dienstkontoausstellers wird automatisch aktiviert, wenn das Dienstkontotoken-Volume-Projekt aktiviert ist.
  • EKS-Cluster: Der Cluster muss einen öffentlichen IAM-OIDC-Identitätsanbieter haben. Folgen Sie der Anleitung unter IAM-OIDC-Anbieter für Ihren Cluster erstellen, um zu prüfen, ob ein Anbieter vorhanden ist, und erstellen Sie gegebenenfalls einen Anbieter.

Ressourcennutzung und Anforderungen

In der Regel benötigt der Connect-Agent bei der Registrierung 500 CPU und 200 Mi Speicher. Die Verwendung hängt jedoch von der Anzahl der Anfragen, die pro Sekunde an den Agent gesendet werden, und von der Größe dieser Anfragen ab. Dies kann durch eine Reihe von Faktoren beeinflusst werden, z. B. über die Größe des Clusters, die Anzahl der Nutzer, die über die Cloud Console auf den Cluster zugreifen (je mehr Nutzer und/oder Arbeitslasten, desto mehr Anfragen) und die Anzahl der Flotten-aktivierten Funktionen im Cluster.

Nächste Schritte