Configurer le pilote CSI Cloud Storage FUSE pour GKE


Cette page explique comment configurer et préparer l'utilisation du pilote CSI Cloud Storage FUSE pour GKE.

Pour utiliser le pilote CSI Cloud Storage FUSE, procédez comme suit:

Créer le bucket Cloud Storage

Si ce n'est pas déjà fait, créez vos buckets Cloud Storage. Vous allez monter ces buckets en tant que volumes dans votre cluster GKE. Pour améliorer les performances, définissez Type d'emplacement sur Région, puis sélectionnez une région correspondant à votre cluster GKE.

Activer le pilote CSI Cloud Storage FUSE

Suivez ces étapes, selon que vous utilisez des clusters GKE Autopilot ou Standard. Nous vous recommandons d'utiliser un cluster Autopilot pour une expérience Kubernetes entièrement gérée. Pour choisir le mode le mieux adapté à vos charges de travail, consultez la section Choisir un mode de fonctionnement GKE.

Autopilot

Le pilote CSI Cloud Storage FUSE est activé par défaut pour les clusters Autopilot. Vous pouvez passer à la section Configurer l'accès aux buckets Cloud Storage.

Standard

Si le pilote CSI Cloud Storage FUSE est activé sur votre cluster Standard, passez à la section Configurer l'accès aux buckets Cloud Storage.

Pour créer un cluster Standard avec le pilote CSI Cloud Storage FUSE activé, vous pouvez utiliser la commande gcloud container clusters create:

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

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • VERSION : numéro de version de GKE. Vous devez sélectionner la version 1.24 ou une version ultérieure.
  • LOCATION: région ou zone Compute Engine du cluster.
  • PROJECT_ID : ID de votre projet.

Pour activer le pilote sur un cluster Standard existant, exécutez la commande [gcloud container clusters update:

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

Pour vérifier que le pilote CSI Cloud Storage FUSE est activé sur votre cluster, exécutez la commande suivante:

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

Configurer l'accès aux buckets Cloud Storage

Le pilote CSI Cloud Storage FUSE utilise la fédération d'identité de charge de travail pour GKE afin que vous puissiez définir des autorisations précises sur la manière dont vos pods GKE peuvent accéder aux données stockées dans Cloud Storage.

Pour rendre vos buckets Cloud Storage accessibles à votre cluster GKE, authentifiez-vous à l'aide de la fédération d'identité de charge de travail pour GKE avec le bucket Cloud Storage que vous souhaitez monter dans la spécification de votre pod:

  1. Si la fédération d'identité de charge de travail pour GKE n'est pas activée, suivez ces étapes pour l'activer.
  2. Obtenez les identifiants de votre cluster :

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster sur lequel la fédération d'identité de charge de travail pour GKE est activée.
    • LOCATION: région ou zone Compute Engine du cluster.
  3. Créez un espace de noms à utiliser pour le compte de service Kubernetes. Vous pouvez également utiliser l'espace de noms default ou tout espace de noms existant.

    kubectl create namespace NAMESPACE
    

    Remplacez NAMESPACE par le nom de l'espace de noms Kubernetes du compte de service Kubernetes.

  4. Créez un compte de service Kubernetes que votre application pourra utiliser. Vous pouvez également utiliser n'importe quel compte de service Kubernetes existant dans n'importe quel espace de noms, y compris le compte de service Kubernetes default.

    kubectl create serviceaccount KSA_NAME \
        --namespace NAMESPACE
    

    Remplacez KSA_NAME par le nom de votre compte de service Kubernetes.

  5. Attribuez l'un des rôles IAM pour Cloud Storage au compte de service Kubernetes. Suivez ces étapes, selon que vous accordez au compte de service Kubernetes un accès à un bucket Cloud Storage spécifique uniquement ou un accès global à tous les buckets du projet.

    Accès à un bucket spécifique

    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"
    

    Remplacez les éléments suivants :

    • BUCKET_NAME : nom de votre bucket Cloud Storage.
    • PROJECT_NUMBER : numéro de projet de votre cluster GKE. Pour trouver votre numéro de projet, consultez Identifier des projets.
    • PROJECT_ID : ID de projet de votre cluster GKE.
    • NAMESPACE : nom de l'espace de noms Kubernetes du compte de service Kubernetes.
    • KSA_NAME : nom de votre nouveau compte de service Kubernetes.
    • ROLE_NAME : rôle IAM à attribuer à votre compte de service Kubernetes.
      • Pour les charges de travail en lecture seule, utilisez le rôle "Lecteur des objets de l'espace de stockage" (roles/storage.objectViewer).
      • Pour les charges de travail en lecture/écriture, utilisez le rôle Utilisateur des objets de l'espace de stockage (roles/storage.objectUser).

    Accès au bucket global

    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"
    

    Remplacez les éléments suivants :

    • GCS_PROJECT : ID de projet de vos buckets Cloud Storage.
    • PROJECT_NUMBER : numéro de projet de votre cluster GKE. Pour trouver votre numéro de projet, consultez Identifier des projets.
    • PROJECT_ID : ID de projet de votre cluster GKE.
    • NAMESPACE : nom de l'espace de noms Kubernetes du compte de service Kubernetes.
    • KSA_NAME : nom de votre nouveau compte de service Kubernetes.
    • ROLE_NAME : rôle IAM à attribuer à votre compte de service Kubernetes.
      • Pour les charges de travail en lecture seule, utilisez le rôle "Lecteur des objets de l'espace de stockage" (roles/storage.objectViewer).
      • Pour les charges de travail en lecture/écriture, utilisez le rôle Utilisateur des objets de l'espace de stockage (roles/storage.objectUser).

Étape suivante