You can run multiple VAST CSI Driver instances on the same Kubernetes cluster.
Notice
This capability is available starting with VAST CSI Driver 2.5.1.
To do so, deploy each instance under its own name specified on the csiDriverName parameter in the driver instance's Helm chart configuration file. Each driver instance needs to be deployed in its own namespace. After deployment, you can supply the driver instance name when specifying the provisioner for a storage class (or a snapshot class), as well as when supplying the driver name in your pod definition.
Note
The default instance name for VAST CSI Driver is
csi.vastdata.com.
For example, to deploy two driver instances named csi1.vastdata.com and csi2.vastdata.com:
Create a Helm chart configuration file for each of the instances and specify the instance name in it, for example:
For instance 1, create
csi1-values.yamlwith:csiDriverName: csi1.vastdata.com
For instance 2, create
csi2-values.yamlwith:csiDriverName: csi2.vastdata.com
Install the Helm chart for driver instance 1 into the namespace designated for this instance, for example:
helm install csi-driver vastcsi/vastcsi -f csi1-values.yaml -n csi1
Install the Helm chart for driver instance 1 into into a namespace that is different from that used for instance 1, for example:
helm install csi-driver vastcsi/vastcsi -f csi2-values.yaml -n csi2
If the Helm chart configuration file contains a Kubernetes secret and its namespace specified as global parameters at the top of the file, a default snapshot class named vastdata-snapshot is automatically created during driver installation (unless you define a snapshot class explicitly in the snapshotClasses section of the file). In this case, since snapshot class names must be unique globally, an attempt to deploy the second driver instance may fail because the default snapshot class already exists. To avoid the failure, edit the Helm chart configuration file of the second driver instance being deployed as follows:
Add the
snapshotClassessection and define a snapshot class explicitly, orRemove the global secret and specify the secret(s) under each storage class (and each snapshot class, if defined).