Cloud Storage FUSE CSI-Treiber für GKE einrichten


Auf dieser Seite wird beschrieben, wie Sie den Cloud Storage FUSE CSI-Treiber für GKE einrichten und für die Verwendung vorbereiten.

So verwenden Sie den CSI-Treiber für Cloud Storage FUSE:

Cloud Storage-Bucket erstellen

Erstellen Sie Ihre Cloud Storage-Buckets, falls noch nicht geschehen. Sie werden diese Bucket als Volumes in Ihrem GKE-Cluster bereitstellen. Zur Leistungssteigerung legen Sie als Standorttyp die Option Region fest und wählen eine Region aus, die mit Ihrem GKE-Cluster übereinstimmt.

CSI-Treiber für Cloud Storage FUSE aktivieren

Führen Sie die folgenden Schritte aus, je nachdem, ob Sie GKE Autopilot- oder Standardcluster verwenden. Für eine vollständig verwaltete Kubernetes-Umgebung empfehlen wir die Verwendung eines Autopilot-Clusters. Informationen zum Auswählen des Modus, der für Ihre Arbeitslasten am besten geeignet ist, finden Sie unter GKE-Betriebsmodus auswählen.

Autopilot

Der CSI-Treiber für Cloud Storage FUSE ist standardmäßig für Autopilot-Cluster aktiviert. Sie können mit Zugriff auf Cloud Storage-Buckets konfigurieren fortfahren.

Standard

Wenn in Ihrem Standardcluster der CSI-Treiber für Cloud Storage FUSE aktiviert ist, fahren Sie mit Zugriff auf Cloud Storage-Buckets konfigurieren fort.

Der Cloud Storage FUSE CSI-Treiber ist in Standardclustern nicht standardmäßig aktiviert. Zum Erstellen eines Standardclusters mit aktiviertem Cloud Storage FUSE CSI-Treiber können Sie den Befehl gcloud container clusters create verwenden:

gcloud container clusters create CLUSTER_NAME \
    --addons GcsFuseCsiDriver \
    --cluster-version=VERSION \
    --location=LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog

Ersetzen Sie Folgendes:

  • CLUSTER_NAME: Der Name Ihres Clusters.
  • VERSION: Die GKE-Versionsnummer. Sie müssen mindestens 1.24 auswählen.
  • LOCATION: die Compute Engine-Region oder -Zone für den Cluster.
  • PROJECT_ID: Ihre Projekt-ID.

Verwenden Sie den Befehl gcloud container clusters update, um den Treiber auf einem vorhandenen Standardcluster zu aktivieren:

gcloud container clusters update CLUSTER_NAME \
    --update-addons GcsFuseCsiDriver=ENABLED \
    --location=LOCATION

Führen Sie den folgenden Befehl aus, um zu prüfen, ob der CSI-Treiber für Cloud Storage FUSE in Ihrem Cluster aktiviert ist:

gcloud container clusters describe CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --format="value(addonsConfig.gcsFuseCsiDriverConfig.enabled)"

Zugriff auf Cloud Storage-Buckets konfigurieren

Der Cloud Storage FUSE CSI-Treiber verwendet die Workload Identity-Föderation für GKE, damit Sie detaillierte Berechtigungen für den Zugriff Ihrer GKE-Pods auf in Cloud Storage gespeicherte Daten festlegen können.

Wenn Sie Ihre Cloud Storage-Buckets für Ihren GKE-Cluster zugänglich machen möchten, authentifizieren Sie sich mit der Identitätsföderation von Arbeitslasten für GKE beim Cloud Storage-Bucket, den Sie in Ihrer Pod-Spezifikation bereitstellen möchten:

  1. Wenn die Identitätsförderung von Arbeitslasten für GKE nicht aktiviert ist, folgen Sie dieser Anleitung, um sie zu aktivieren. Wenn Sie einen vorhandenen Knotenpool verwenden möchten, aktivieren Sie die Identitätsföderation von Arbeitslasten für GKE in Ihrem Knotenpool manuell, nachdem Sie die Identitätsföderation von Arbeitslasten für GKE in Ihrem Cluster aktiviert haben.
  2. Rufen Sie Anmeldedaten für Ihren Cluster ab:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=LOCATION
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME: Der Name Ihres Clusters, für den Workload Identity Federation for GKE aktiviert ist.
    • LOCATION: die Compute Engine-Region oder -Zone für den Cluster.
  3. Erstellen Sie einen Namespace, der für das Kubernetes-Dienstkonto verwendet werden soll. Sie können auch den Namespace default oder einen vorhandenen Namespace verwenden.

    kubectl create namespace NAMESPACE
    

    Ersetzen Sie NAMESPACE durch den Namen des Kubernetes-Namespace für das Kubernetes-Dienstkonto.

  4. Erstellen Sie ein Kubernetes-ServiceAccount für die Anwendung: Sie können auch ein beliebiges Kubernetes-Dienstkonto in einem beliebigen Namespace verwenden, einschließlich des default-Kubernetes-Dienstkontos.

    kubectl create serviceaccount KSA_NAME \
        --namespace NAMESPACE
    

    Ersetzen Sie KSA_NAME durch den Namen Ihres Kubernetes-Dienstkontos.

  5. Weisen Sie dem Kubernetes-Dienstkonto eine der IAM-Rollen für Cloud Storage zu. Führen Sie die folgenden Schritte aus, je nachdem, ob Sie dem Kubernetes-Dienstkonto nur Zugriff auf einen bestimmten Cloud Storage-Bucket oder globalen Zugriff auf alle Buckets im Projekt gewähren möchten.

    Zugriff auf einen bestimmten Bucket

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \
        --role "ROLE_NAME"
    

    Ersetzen Sie Folgendes:

    • BUCKET_NAME: Name Ihres Cloud Storage-Buckets.
    • PROJECT_NUMBER: Die numerische Projektnummer Ihres GKE-Clusters. Informationen zum Ermitteln der Projektnummer finden Sie unter Projekte identifizieren.
    • PROJECT_ID: Die Projekt-ID Ihres GKE-Clusters.
    • NAMESPACE: der Name des Kubernetes-Namespace für das Kubernetes-ServiceAccount.
    • KSA_NAME: der Name des neuen Kubernetes-ServiceAccount.
    • ROLE_NAME: Die IAM-Rolle, die Ihrem Kubernetes-Dienstkonto zugewiesen werden soll.
      • Verwenden Sie für schreibgeschützte Arbeitslasten die Rolle "Storage-Objekt-Betrachter" (roles/storage.objectViewer).
      • Verwenden Sie für Lese-/Schreibarbeitslasten die Rolle „Storage-Objekt-Nutzer“ (roles/storage.objectUser).

    Globaler Bucketzugriff

    gcloud projects add-iam-policy-binding GCS_PROJECT \
        --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \
        --role "ROLE_NAME"
    

    Ersetzen Sie Folgendes:

    • GCS_PROJECT: die Projekt-ID Ihrer Cloud Storage-Buckets.
    • PROJECT_NUMBER: Die numerische Projektnummer Ihres GKE-Clusters. Informationen zum Ermitteln der Projektnummer finden Sie unter Projekte identifizieren.
    • PROJECT_ID: Die Projekt-ID Ihres GKE-Clusters.
    • NAMESPACE: der Name des Kubernetes-Namespace für das Kubernetes-ServiceAccount.
    • KSA_NAME: der Name des neuen Kubernetes-ServiceAccount.
    • ROLE_NAME: Die IAM-Rolle, die Ihrem Kubernetes-Dienstkonto zugewiesen werden soll.
      • Verwenden Sie für schreibgeschützte Arbeitslasten die Rolle "Storage-Objekt-Betrachter" (roles/storage.objectViewer).
      • Verwenden Sie für Lese-/Schreibarbeitslasten die Rolle „Storage-Objekt-Nutzer“ (roles/storage.objectUser).

Nächste Schritte