Filestore agent volumes integrate with Google Kubernetes Engine (GKE) to provide high-density, low-latency persistent file storage for stateful AI agent sandboxes, developer environments, and multi-agent workflows.
This guide walks you through the prerequisites needed to use Filestore agent volumes on GKE.
Before you begin
- Complete the initial setup in Set up Filestore agent volumes.
Enable the GKE API:
gcloud services enable container.googleapis.com \ --project=PROJECT_IDInstall the required components for
gcloud:gcloud components install kubectl gke-gcloud-auth-plugin
Create a GKE cluster
Create a GKE cluster connected to your 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
Replace the following:
CLUSTER_NAME: the name of the new cluster.REGION: the region where your volume pool resides, such asus-central1.PROJECT_ID: your Google Cloud project ID.VPC_NETWORK: the name of your PSC-enabled VPC network.SUBNET_NAME: the name of the subnet.
Set up Workload Identity Federation for GKE and IAM
Give the Kubernetes ServiceAccount used by the CSI driver and the Compute Engine default service account permissions to provision Filestore volumes:
Get your project number:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"Replace
PROJECT_IDwith your project ID.Grant the Cloud Filestore Editor role (
roles/file.editor) on the project to the Kubernetes ServiceAccount (gcp-filestore-csi-controller-sa) in thegcp-filestore-csi-drivernamespace:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/gcp-filestore-csi-driver/sa/gcp-filestore-csi-controller-sa" \ --role="roles/file.editor" \ --condition=NoneReplace the following:
PROJECT_ID: your Google Cloud project ID.PROJECT_NUMBER: your Google Cloud project number.
Grant the Cloud Filestore Editor role (
roles/file.editor) on the project to the Compute Engine default service account:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/file.editor" \ --condition=None
Deploy the Filestore CSI driver
Get cluster credentials:
gcloud container clusters get-credentials CLUSTER_NAME \ --region=REGION \ --project=PROJECT_IDClone the driver repository and apply the
volumepooloverlay:git clone https://github.com/kubernetes-sigs/gcp-filestore-csi-driver.git cd gcp-filestore-csi-driver kubectl apply -k deploy/kubernetes/overlays/volumepool
Verify that the CSI driver pods are running:
kubectl get pods -n gcp-filestore-csi-driver
The output is similar to the following:
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
Apply the StorageClass for your volume pool
To allow your GKE workloads to dynamically provision volumes from
your volume pool, apply a Kubernetes StorageClass to your cluster.
If you already created the volume-pool-sc.yaml manifest in
Set up Filestore agent volumes,
skip to step 2.
Create a file named
volume-pool-sc.yamlwith the following configuration: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: DeleteReplace the following:
PROJECT_ID: the ID of your Google Cloud project.LOCATION: the region where your volume pool is deployed, such asus-central1.VOLUME_POOL_ID: the identifier of your volume pool.
Apply the manifest:
kubectl apply -f volume-pool-sc.yaml
Verify that the
StorageClassis available:kubectl get storageclass volume-pool-sc
The output is similar to the following:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE volume-pool-sc filestore.csi.storage.gke.io Delete Immediate true 1m
After completing this guide, your GKE environment is ready to support Filestore agent volumes.
What's next
With your GKE cluster and storage class configured, you can deploy stateful AI agent workloads using any of the following orchestration patterns:
- Deploy workloads using GKE Agent Substrate.
- Deploy workloads using GKE Agent Sandbox.
- Configure dynamic storage late-binding.
- Deploy self-managed GKE workloads.