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.

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 Federation for 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.
  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 Bucket-Zugriff

    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