Configurer l'environnement GKE pour les volumes de l'agent Filestore

Les volumes de l'agent Filestore s'intègrent à Google Kubernetes Engine (GKE) pour fournir un stockage de fichiers persistant à haute densité et à faible latence pour les bacs à sable d'agents d'IA avec état, les environnements de développement et les workflows multi-agents.

Ce guide vous présente les prérequis nécessaires pour utiliser les volumes d'agent Filestore sur GKE.

Avant de commencer

  1. Effectuez la configuration initiale dans Configurer des volumes d'agent Filestore.
  2. Activez l'API GKE :

    gcloud services enable container.googleapis.com \
        --project=PROJECT_ID
    
  3. Installez les composants requis pour gcloud :

    gcloud components install kubectl gke-gcloud-auth-plugin
    

Créer un cluster GKE

Créez un cluster GKE connecté à votre Private Service Connect.

gcloud container clusters create CLUSTER_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --network=projects/PROJECT_ID/global/networks/VPC_NETWORK \
    --subnetwork=SUBNET_NAME \
    --num-nodes=3 \
    --workload-pool=PROJECT_ID.svc.id.goog\
    --scopes=cloud-platform \
    --enable-agent-sandbox \
    --addons=GcpFilestoreCsiDriver=DISABLED \
    --cluster-version=1.36.0-gke.3302001

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster
  • REGION : région où réside votre pool de volumes, par exemple us-central1.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • VPC_NETWORK : nom de votre réseau VPC compatible avec PSC.
  • SUBNET_NAME : nom du sous-réseau.

Configurer la fédération d'identité de charge de travail pour GKE et IAM

Configurez un compte de service Google (GSA) avec les autorisations nécessaires pour provisionner des volumes Filestore et associez-le au compte de service Kubernetes (KSA) utilisé par le pilote CSI.

  1. Créez le compte de service Google :

    gcloud iam service-accounts create filestore-csi-gsa \
        --display-name="Filestore CSI Driver GSA" \
        --project=PROJECT_ID
    
  2. Attribuez le rôle Éditeur Cloud Filestore (roles/file.editor) au compte de service :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/file.editor"
    
  3. Attribuez le rôle Éditeur Cloud Filestore (roles/file.editor) au compte de service Compute Engine par défaut :

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/file.editor"
    
  4. Associez le KSA dans l'espace de noms gcp-filestore-csi-driver au GSA :

    gcloud iam service-accounts add-iam-policy-binding \
        filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/iam.workloadIdentityUser" \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[gcp-filestore-csi-driver/gcp-filestore-csi-controller-sa]" \
        --project=PROJECT_ID
    

Déployer le pilote CSI Filestore

  1. Obtenez les identifiants du cluster :

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID
    
  2. Clonez le dépôt du pilote et appliquez la superposition volumepool :

    git clone https://github.com/kubernetes-sigs/gcp-filestore-csi-driver.git
    cd gcp-filestore-csi-driver
    kubectl apply -k deploy/kubernetes/overlays/volumepool
    
  3. Annotez le compte de service du contrôleur avec le CSA :

    kubectl annotate serviceaccount gcp-filestore-csi-controller-sa \
        --namespace=gcp-filestore-csi-driver \
        --overwrite \
        iam.gke.io/gcp-service-account=filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com
    
  4. Vérifiez que les pods du pilote CSI sont en cours d'exécution :

    kubectl get pods -n gcp-filestore-csi-driver
    

    Le résultat ressemble à ce qui suit :

    NAME                             READY   STATUS    RESTARTS   AGE
    gcp-filestore-csi-controller-0   5/5     Running   0          2m
    gcp-filestore-csi-node-abcde     3/3     Running   0          2m
    

Appliquer StorageClass à votre pool de volume

Pour permettre à vos charges de travail GKE de provisionner dynamiquement des volumes à partir de votre pool de volumes, appliquez un StorageClass Kubernetes à votre cluster.

Si vous avez déjà créé le fichier manifeste volume-pool-sc.yaml dans Configurer les volumes de l'agent Filestore, passez à l'étape 2.

  1. Créez un fichier nommé volume-pool-sc.yaml avec la configuration suivante :

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: volume-pool-sc
    provisioner: filestore.csi.storage.gke.io
    parameters:
      volume-pool: "projects/<var>PROJECT_ID</var>/locations/<var>LOCATION</var>/volumePools/<var>VOLUME_POOL_ID</var>"
    mountOptions:
      - vers=3
      - proto=tcp
      - mountproto=tcp
      - port=2049
      - mountport=2050
    volumeBindingMode: Immediate
    reclaimPolicy: Delete
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • LOCATION : région dans laquelle votre pool de volumes est déployé, par exemple us-central1.
    • VOLUME_POOL_ID : identifiant de votre pool de volumes.
  2. Appliquez le fichier manifeste :

    kubectl apply -f volume-pool-sc.yaml
    
  3. Vérifiez que StorageClass est disponible :

    kubectl get storageclass volume-pool-sc
    

    Le résultat ressemble à ce qui suit :

    NAME             PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    volume-pool-sc   filestore.csi.storage.gke.io   Delete          Immediate           true                   1m
    

Une fois ce guide terminé, votre environnement GKE est prêt à prendre en charge les volumes de l'agent Filestore.

Étapes suivantes

Une fois votre cluster GKE et votre classe de stockage configurés, vous pouvez déployer des charges de travail d'agents d'IA avec état à l'aide de l'un des modèles d'orchestration suivants :