--- title: "Installing the VAST CSI Driver" slug: "installing-vast-csi-driver" description: "Learn how to install Helm and the VAST CSI Driver on your Kubernetes cluster, including creating namespaces, secrets, and configuration files." tags: ["csi", "DataEngine"] updated: 2026-10-28T02:14:35Z published: 2026-10-28T02:14:35Z canonical: "docs.vastdata.com/installing-vast-csi-driver" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.vastdata.com/llms.txt > Use this file to discover all available pages before exploring further. # Installing the VAST CSI Driver > [!NOTE] > ℹ️ Info > > **Outcome:** The VAST CSI driver is installed and can dynamically provision a persistent volume claim. This section is optional but recommended. > > **Before you begin:** Install the RKE2 cluster and complete the optional CSI tenant, view, policy, and service-account setup. > > **Previous:** [Create a Podman Registry for the RKE2 Cluster](/develop/docs/create-a-registry-with-podman-self-signed-tls-with-rke2-cluster) | **Next:** [Install DataEngine Prerequisites on the Kubernetes Cluster](/develop/docs/install-the-de-prerequisites-on-the-kubernetes-cluster-5-4-x-and-5-3-x) ## Install Helm Install Helm on the manager node only. The remaining cluster nodes do not need Helm. Helm is typically [downloaded](https://github.com/helm/helm/releases) as a binary. [Quickstart](https://helm.sh/docs/intro/quickstart/) is a good place to start learning about Helm. ### Download the Helm archive On the manager node ```bash cd ~ wget https://get.helm.sh/helm-v4.2.3-linux-amd64.tar.gz ``` Example Output ```plaintext --2026-07-31 17:25:59--  https://get.helm.sh/helm-v4.2.3-linux-amd64.tar.gz Resolving get.helm.sh (get.helm.sh)... 13.107.253.71, 13.107.226.71, 2620:1ec:48:1::71, ... Connecting to get.helm.sh (get.helm.sh)|13.107.253.71|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 19812941 (19M) [application/x-tar] Saving to: ‘helm-v4.2.3-linux-amd64.tar.gz’ helm-v4.2.3-linux-amd64.tar.gz                100%[===============================================================================================>]  18.89M  55.3MB/s    in 0.3s 2026-07-31 17:25:59 (55.3 MB/s) - ‘helm-v4.2.3-linux-amd64.tar.gz’ saved [19812941/19812941] ``` ### Extract the Helm archive ```plaintext tar -xzvf helm-v4.2.3-linux-amd64.tar.gz ``` ### Copy the binary to `/usr/local/bin` ```plaintext sudo cp linux-amd64/helm /usr/local/bin/ sudo chmod 555 /usr/local/bin/helm ``` ## Install VAST CSI Driver ### Install Custom Resource Definitions for snapshots Run the following commands on the manager node ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v7.0.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v7.0.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v7.0.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v7.0.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v7.0.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml ``` ### Add the Helm Repository for VAST CSI Driver Add the Helm repository that contains the VAST CSI Driver Helm chart to the list of available repositories: Add the Helm repository for VAST CSI Driver: ```bash helm repo add vastcsi https://vast-data.github.io/vast-csi ``` Expected Output ```plaintext "vastcsi" has been added to your repositories ``` Verify that the repository has been added: ```bash helm repo list ``` The output is similar to the following: ```plaintext NAME    URL vastcsi https://vast-data.github.io/vast-csi ``` ### Create a Kubernetes Namespace for VAST CSI Driver ```bash kubectl create ns vast-csi ``` Expected Output ```plaintext namespace/vast-csi created ``` Verify the Namespace ```bash kubectl get ns ``` Example Output ```plaintext NAME              STATUS   AGE default           Active   3d18h kube-node-lease   Active   3d18h kube-public       Active   3d18h kube-system       Active   3d18h vast-csi          Active   2d19h ``` ### Create a Kubernetes Secret for VAST CSI Driver Create `secret.yaml` Modify the values in the YAML below to match your environment | Field | Description | | --- | --- | | `name` | Name for the Kubernetes secret | | `endpoint` | VMS IP address of the VAST Cluster | | `username` | CSI Driver service account created earlier | | `password` | Password for the CSI Driver service account | | `tenant` | Tenant created for the VAST CSI Driver | ```yaml apiVersion: v1 kind: Secret metadata:  name: de-lab-csi type: Opaque stringData:  endpoint: "10.143.12.206"  username: "de-lab-csi-driver"  password: ""  tenant: "de-lab-csi" ``` Run the command ```bash kubectl apply -f secret.yaml -n vast-csi ``` Expected Output ```plaintext secret/de-lab-csi created ``` Verify Secret ```bash kubectl get secret -n vast-csi ``` Example Output ```plaintext NAME         TYPE     DATA   AGE de-lab-csi   Opaque   3      60s ``` ### Create a Helm Chart Configuration File for VAST CSI Driver Create `values.yaml` Modify the values in the YAML below to match your environment | `vipPool` | VIP Pool used for CSI Tenant | | --- | --- | | `viewPolicy` | View Policy created for CSI | | `secretName` | Name of the secret that was just created | ```yaml truncateVolumeName: 128 storageClasses:  vast-nfs:    vipPool: "de-lab-csi-vippool"    storagePath: "/k8s/csi/pvcs"    viewPolicy: "de-lab-csi-policy"    volumeNameFormat: "csi:{namespace}:{name}:{id}"    ephemeralVolumeNameFormat: "csi:{namespace}:{name}:{id}"    mountOptions:      - vers=3      - proto=tcp      - nconnect=16    secretName: "de-lab-csi"    secretNamespace: "vast-csi"    setDefaultStorageClass: true controller:  runOnMaster: false  runOnControlPlane: false  nodeSelector:    node-role.kubernetes.io/control-plane: "true" ``` Test the config file ```bash helm template csi-driver vastcsi/vastcsi -f values.yaml ``` Example output (very long) ```yaml --- # Source: vastcsi/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:  name: csi-driver-vast-controller-sa  namespace: "default"  labels:    helm.sh/chart: vastcsi-2.6.5    app.kubernetes.io/name: vastcsi    app.kubernetes.io/instance: csi-driver    app.kubernetes.io/managed-by: Helm --- # Source: vastcsi/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:  name: csi-driver-vast-node-sa  namespace: "default"  labels:    helm.sh/chart: vastcsi-2.6.5    app.kubernetes.io/name: vastcsi    app.kubernetes.io/instance: csi-driver    app.kubernetes.io/managed-by: Helm     ``` ### Install the VAST CSI Driver Helm Chart Refresh Helm repository information: ```bash helm repo update ``` Example Output ```plaintext Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "vastcsi" chart repository Update Complete. ⎈Happy Helming!⎈ ``` Run the following command to initiate the install: ```bash helm install / -f .yaml -n ``` For example: ```bash helm install csi-driver vastcsi/vastcsi -f values.yaml -n vast-csi ``` Example Output ```plaintext NAME: csi-driver LAST DEPLOYED: Mon Aug  3 15:29:36 2026 NAMESPACE: vast-csi STATUS: deployed REVISION: 1 DESCRIPTION: Install complete TEST SUITE: None NOTES: Thank you for installing vastcsi. Your release is named csi-driver. The release is installed in namespace vast-csi To learn more about the release, try:  $ helm status -n vast-csi csi-driver  $ helm get all -n vast-csi csi-driver Examples on how to configure a storage class and start using the driver are here: https://support.vastdata.com/s/topic/0TOV400000026yzOAA/vast-csi-driver ``` ### Validate the install ```bash helm status -n vast-csi csi-driver ``` Example Output ```plaintext NAME: csi-driver LAST DEPLOYED: Mon Aug  3 15:29:36 2026 NAMESPACE: vast-csi STATUS: deployed REVISION: 1 DESCRIPTION: Install complete RESOURCES: ==> v1/StorageClass NAME                 PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE vast-nfs (default)   csi.vastdata.com   Delete          Immediate           true                   4m37s ==> v1/ClusterRole NAME                               CREATED AT csi-driver-vast-provisioner-role   2026-08-03T15:29:36Z csi-driver-vast-attacher-role   2026-08-03T15:29:36Z csi-driver-external-resizer-runner   2026-08-03T15:29:36Z ==> v1/ClusterRoleBinding NAME                                  ROLE                                           AGE csi-driver-vast-provisioner-binding   ClusterRole/csi-driver-vast-provisioner-role   4m37s csi-driver-vast-attacher-binding   ClusterRole/csi-driver-vast-attacher-role   4m37s csi-driver-resizer-role   ClusterRole/csi-driver-external-resizer-runner   4m37s ==> v1/DaemonSet NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE csi-vast-node   6         6         6       6            6                    4m37s ==> v1/Pod(related) NAME                  READY   STATUS    RESTARTS   AGE csi-vast-node-8xvtp   2/2     Running   0          4m36s csi-vast-node-bv69k   2/2     Running   0          4m36s csi-vast-node-kpvgl   2/2     Running   0          4m36s csi-vast-node-lfgmj   2/2     Running   0          4m36s csi-vast-node-r5fmr   2/2     Running   0          4m36s csi-vast-node-v5xlh   2/2     Running   0          4m36s csi-vast-controller-777b946659-vcjkk   5/5   Running   0     4m36s ==> v1/Deployment NAME                  READY   UP-TO-DATE   AVAILABLE   AGE csi-vast-controller   1/1     1            1           4m36s ==> v1/CSIDriver NAME               ATTACHREQUIRED   PODINFOONMOUNT   STORAGECAPACITY   TOKENREQUESTS   REQUIRESREPUBLISH   MODES                  AGE csi.vastdata.com   true             true             false                     false               Persistent,Ephemeral   4m36s ==> v1/ServiceAccount NAME                            AGE csi-driver-vast-controller-sa   4m37s csi-driver-vast-node-sa   4m37s TEST SUITE: None NOTES: Thank you for installing vastcsi. Your release is named csi-driver. The release is installed in namespace vast-csi To learn more about the release, try:  $ helm status -n vast-csi csi-driver  $ helm get all -n vast-csi csi-driver Examples on how to configure a storage class and start using the driver are here: https://support.vastdata.com/s/topic/0TOV400000026yzOAA/vast-csi-driver ``` Also run ```bash helm list -n vast-csi ``` Example Output ```plaintext NAME       NAMESPACE REVISION UPDATED                                 STATUS   CHART         APP VERSION csi-driver vast-csi 1       2026-08-03 15:29:36.664472551 +0000 UTC deployed vastcsi-2.6.5 ``` Additional Validations ```bash kubectl get storageclass ``` ```plaintext NAME                 PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE vast-nfs (default)   csi.vastdata.com   Delete          Immediate           true                   13m ``` ```bash kubectl get csidrivers ``` ```plaintext NAME               ATTACHREQUIRED   PODINFOONMOUNT   STORAGECAPACITY   TOKENREQUESTS   REQUIRESREPUBLISH   MODES                  AGE csi.vastdata.com   true             true             false                     false               Persistent,Ephemeral   14m ``` ```bash kubectl get pods -n vast-csi -o wide ``` ```plaintext NAME                                   READY   STATUS    RESTARTS   AGE   IP            NODE                 NOMINATED NODE   READINESS GATES csi-vast-controller-777b946659-vcjkk   5/5     Running   0          14m   10.144.19.53   ubuntu-03             csi-vast-node-8xvtp                    2/2     Running   0          14m   10.144.19.55   ubuntu-05             csi-vast-node-bv69k                    2/2     Running   0          14m   10.144.19.51   ubuntu-01             csi-vast-node-kpvgl                    2/2     Running   0          14m   10.144.19.56   ubuntu-06             csi-vast-node-lfgmj                    2/2     Running   0          14m   10.144.19.54   ubuntu-04             csi-vast-node-r5fmr                    2/2     Running   0          14m   10.144.19.52   ubuntu-02             csi-vast-node-v5xlh                    2/2     Running   0          14m   10.144.19.53   ubuntu-03             ``` ### Create a PVC Create a configuration file for a PVC (`testpvc.yaml`)as follows: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:  name: vast-pvc-1 spec:  accessModes:  - ReadWriteMany  resources:    requests:      storage: 1Gi  storageClassName: vast-nfs ``` Apply the PVC configuration file: ```bash kubectl apply -f testpvc.yaml -n vast-csi ``` Expected Output ```plaintext persistentvolumeclaim/vast-pvc-1 created ``` Verify that the PVC has been created with the following commands: ```bash kubectl get pvc -n vast-csi ``` Example Output ```plaintext NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE vast-pvc-1   Bound    pvc-c4090c55-09f4-4756-ac4e-2cc62eeb55f9   1Gi        RWX            vast-nfs                       5m36s ``` ```bash kubectl get pv ``` Example Output ```plaintext NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE pvc-fab55a5d-3b8b-4c54-8c2a-31c50a4199a8   1Gi        RWX            Delete           Bound    vast-csi/vast-pvc-1   vast-nfs                                19s ``` In Element Store → Views ![image-20260803-180318.png](https://cdn.us.document360.io/89b91113-5dc6-49db-86ec-57b16dc8ce56/Images/Documentation/image-20260803-180318.png?sv=2026-02-06&spr=https&st=2026-11-08T09%3A14%3A34Z&se=2026-11-08T10%3A14%3A34Z&sr=c&sp=r&sig=ZqgNsDGTeqEvIuhQmM5acPX6mC%2FKRa50t%2BLFmjOjKLg%3D) In Element Store → Quotas ![image-20260803-181045.png](https://cdn.us.document360.io/89b91113-5dc6-49db-86ec-57b16dc8ce56/Images/Documentation/image-20260803-181045.png?sv=2026-02-06&spr=https&st=2026-11-08T09%3A14%3A34Z&se=2026-11-08T10%3A14%3A34Z&sr=c&sp=r&sig=ZqgNsDGTeqEvIuhQmM5acPX6mC%2FKRa50t%2BLFmjOjKLg%3D)