Hinweis

Wenn Sie einen Kubernetes-Cluster außerhalb von Google Cloud registrieren möchten, müssen Sie zusätzlich zu den allgemeinen Voraussetzungen die folgenden Schritte ausführen.

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 und storage.googleapis.com zum Abrufen des GKE Connect-Agent-Images.

Wenn Sie den Cluster mit Workload Identity für Flotten 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. Dies kann entweder sein:

Angehängte Cluster können mit aktivierter Workload Identity-Flotte registriert werden, wenn der Cluster unsere Voraussetzungen für angehängte Cluster erfüllt, wie unten beschrieben. Registrieren Sie andernfalls angehängte Cluster bei einem Google Cloud-Dienstkonto, um sich zu authentifizieren. Im nächsten Abschnitt erfahren Sie, wie Sie ein Dienstkonto erstellen.

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}

wobei

  • 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.
  • 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 Kubernetes-Clusters eines Drittanbieters, 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: security.openshift.io/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 bei aktivierter Flotte-Workload Identity registrieren, wenn Ihre Plattform einen öffentlichen OIDC-Endpunkt für Ihren Cluster erstellt (oder Sie einen erstellen können) oder wenn Sie Kubernetes-Erkennung des Dienstkontoausstellers für den Cluster 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.
  • Artcluster: Damit die Flotten-Workload Identity verwendet werden kann, muss die Erkennung des Dienstkontoausstellers aktiviert sein. Sie ist ab Kubernetes Version 1.20 standardmäßig aktiviert. Wenn Sie dieses Feature aktivieren müssen, folgen Sie der Anleitung unter Projektion des Volumes für das Dienstkonto-Token. Die Erkennung des Dienstkontoausstellers wird automatisch aktiviert, wenn das Volume-Projekt für das Dienstkonto-Token aktiviert ist.

Nächste Schritte

Folgen Sie der Anleitung zum Registrieren eines Clusters.