Can I mount a directory inside filestore using CSI driver

Hello,

I am using filestore and the CSI driver to mount a pre-existing filestore instance. Follow these instructions: https://cloud.google.com/filestore/docs/csi-driver#access 

However I would like to mount a directory inside the filestore instance. I have tried extending the volumeHandle like this:

 

 

volumeHandle: "modeInstance/FILESTORE_INSTANCE_LOCATION/FILESTORE_INSTANCE_NAME/FILESTORE_SHARE_NAME/MYDIRECTORY"

 

 

 But this did not mount MYDIRECTORY. Is there a way to do this?

Thanks

Stephan

0 4 167
4 REPLIES 4

So you have an existing Filestore instance which already has a directory and you'd like to mount / access that directory from your pod?

Yes that's correct

Yes, you can mount a directory inside a filestore using a Container Storage Interface (CSI) driver. Filestore is a managed file storage service on Google Cloud Platform (GCP) that provides a network-attached storage (NAS) for your applications. CSI drivers are used to facilitate the management and use of storage resources within Kubernetes.

To mount a Filestore instance in Kubernetes using a CSI driver, follow these general steps:

### Step-by-Step Guide

#### 1. Set Up Filestore Instance

First, create a Filestore instance in Google Cloud:

1. **Create Filestore Instance:**
- Go to the Google Cloud Console.
- Navigate to the Filestore section.
- Create a new Filestore instance, specifying the necessary parameters such as the region, zone, tier, and capacity.
- Note down the IP address of the Filestore instance.

#### 2. Set Up Kubernetes Cluster

Ensure you have a Kubernetes cluster running. You can create a cluster using GKE (Google Kubernetes Engine) or any other Kubernetes setup.

#### 3. Install the Filestore CSI Driver

You need to install the Filestore CSI driver on your Kubernetes cluster. Google provides a CSI driver for Filestore.

1. **Install the CSI Driver:**
- Follow the instructions in the [Filestore CSI Driver documentation](https://github.com/kubernetes-sigs/gcp-filestore-csi-driver) to deploy the driver to your Kubernetes cluster.

#### 4. Create a PersistentVolume and PersistentVolumeClaim

Create a PersistentVolume (PV) and PersistentVolumeClaim (PVC) to use the Filestore instance.

1. **Create a PersistentVolume:**

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: filestore-pv
spec:
capacity:
storage: 1Ti
accessModes:
- ReadWriteMany
csi:
driver: filestore.csi.storage.gke.io
volumeHandle: projects/<PROJECT_ID>/locations/<ZONE>/instances/<FILESTORE_INSTANCE_ID>/volumes/<VOLUME_NAME>
persistentVolumeReclaimPolicy: Retain
storageClassName: filestore
volumeMode: Filesystem
```

2. **Create a PersistentVolumeClaim:**

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: filestore-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Ti
storageClassName: filestore
```

Replace the placeholders (`<PROJECT_ID>`, `<ZONE>`, `<FILESTORE_INSTANCE_ID>`, and `<VOLUME_NAME>`) with your specific details.

#### 5. Use the PVC in Your Pods

Now, you can mount the PVC in your pods by referencing the PVC in the pod's volume configuration.

1. **Create a Pod:**

```yaml
apiVersion: v1
kind: Pod
metadata:
name: filestore-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
- mountPath: "/mnt/filestore"
name: filestore-volume
volumes:
- name: filestore-volume
persistentVolumeClaim:
claimName: filestore-pvc
```

Yes, you can mount a directory inside a filestore using a Container Storage Interface (CSI) driver. Filestore is a managed file storage service on Google Cloud Platform (GCP) that provides a network-attached storage (NAS) for your applications. CSI drivers are used to facilitate the management and use of storage resources within Kubernetes.

To mount a Filestore instance in Kubernetes using a CSI driver, follow these general steps:

### Step-by-Step Guide

#### 1. Set Up Filestore Instance

First, create a Filestore instance in Google Cloud:

1. **Create Filestore Instance:**
- Go to the Google Cloud Console.
- Navigate to the Filestore section.
- Create a new Filestore instance, specifying the necessary parameters such as the region, zone, tier, and capacity.
- Note down the IP address of the Filestore instance.

#### 2. Set Up Kubernetes Cluster

Ensure you have a Kubernetes cluster running. You can create a cluster using GKE (Google Kubernetes Engine) or any other Kubernetes setup.

#### 3. Install the Filestore CSI Driver

You need to install the Filestore CSI driver on your Kubernetes cluster. Google provides a CSI driver for Filestore.

1. **Install the CSI Driver:**
- Follow the instructions in the [Filestore CSI Driver documentation](https://github.com/kubernetes-sigs/gcp-filestore-csi-driver) to deploy the driver to your Kubernetes cluster.

#### 4. Create a PersistentVolume and PersistentVolumeClaim

Create a PersistentVolume (PV) and PersistentVolumeClaim (PVC) to use the Filestore instance.

1. **Create a PersistentVolume:**

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: filestore-pv
spec:
capacity:
storage: 1Ti
accessModes:
- ReadWriteMany
csi:
driver: filestore.csi.storage.gke.io
volumeHandle: projects/<PROJECT_ID>/locations/<ZONE>/instances/<FILESTORE_INSTANCE_ID>/volumes/<VOLUME_NAME>
persistentVolumeReclaimPolicy: Retain
storageClassName: filestore
volumeMode: Filesystem
```

2. **Create a PersistentVolumeClaim:**

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: filestore-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Ti
storageClassName: filestore
```

Replace the placeholders (`<PROJECT_ID>`, `<ZONE>`, `<FILESTORE_INSTANCE_ID>`, and `<VOLUME_NAME>`) with your specific details.

#### 5. Use the PVC in Your Pods

Now, you can mount the PVC in your pods by referencing the PVC in the pod's volume configuration.

1. **Create a Pod:**

```yaml
apiVersion: v1
kind: Pod
metadata:
name: filestore-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
- mountPath: "/mnt/filestore"
name: filestore-volume
volumes:
- name: filestore-volume
persistentVolumeClaim:
claimName: filestore-pvc
```

In this configuration, the NGINX container will mount the Filestore volume at `/mnt/filestore`.

### Summary

By following these steps, you can mount a directory inside a Filestore using the CSI driver in a Kubernetes environment. This setup allows your applications running on Kubernetes to utilize the Filestore instance for persistent storage.

In this configuration, the NGINX container will mount the Filestore volume at `/mnt/filestore`.

 

Thank you for this response. But its not the solution I am looking for. I want to mount a directory that exists inside the Filestore instance and NOT the root of the Filestore instance. The mountPath doesn't achieve this.

Top Labels in this Space
Top Solution Authors