Repository for CSI Driver for Dell EMC PowerStore
CSI Driver for PowerStore is part of the CSM (Container Storage Modules) open-source suite of Kubernetes storage enablers for Dell EMC products. CSI Driver for PowerStore is a Container Storage Interface (CSI) driver that provides support for provisioning persistent storage using Dell EMC PowerStore storage array.
It supports CSI specification version 1.3.
This project may be compiled as a stand-alone binary using Golang that, when run, provides a valid CSI endpoint. It also can be used as a precompiled container image.
For any CSI driver issues, questions or feedback, please follow our support process
This project is a Go module (see golang.org Module information for explanation). The dependencies for this project are listed in the go.mod file.
To build the source, execute make clean build
.
To run unit tests, execute make test
.
To build an image, execute make docker
.
Both the Controller and the Node portions of the driver can only be run on nodes with network connectivity to a Dell EMC PowerStore server (which is used by the driver).
If you want to use iSCSI as a transport protocol be sure that iscsi-initiator-utils
package is installed on your node.
If you want to use FC be sure that zoning of Host Bus Adapters to the FC port directors was done.
If you want to use NFS be sure to enable it in myvalues.yaml
or in your storage classes, and configure corresponding NAS servers on PowerStore.
Please consult the Installation Guide
- Upstream Kubernetes versions 1.19, 1.20 or 1.21 or OpenShift versions 4.6 (EUS), 4.7
- You can access your cluster with
kubectl
andhelm
- Optionally ensure that you have both Volume Snapshot CRDs
and common snapshot controller installed in your Kubernetes cluster and Snaphot feature is enabled in your copy of
values.yaml
if you want to use the feature.
-
Run
git clone /~https://github.com/dell/csi-powerstore.git
to clone the git repository -
Ensure that you've created namespace where you want to install the driver. You can run
kubectl create namespace csi-powerstore
to create a new one. -
Edit
helm/secret.yaml
, correct namespace field to point to your desired namespace -
Edit
helm/config.yaml
file and configure connection information for your PowerStore arrays changing following parameters:- endpoint: defines the full URL path to the PowerStore API.
- globalID: specifies what storage cluster the driver should use
- username, password: defines credentials for connecting to array.
- skipCertificateValidation: defines if we should use insecure connection or not.
- isDefault: defines if we should treat the current array as a default.
- blockProtocol: defines what SCSI transport protocol we should use (FC, ISCSI, None, or auto).
- nasName: defines what NAS should be used for NFS volumes.
Add more blocks similar to above for each PowerStore array if necessary.
-
Create storage classes using ones from
helm/samples/storageclass
folder as an example and apply them to the Kubernetes cluster by runningkubectl create -f <path_to_storageclass_file>
If you don't specify
arrayID
parameter in the storage class then the array that was specified as the default would be used for provisioning volumes.arrayID
corresponds toglobalID
of storage cluster. -
Create the secret by running
sed "s/CONFIG_YAML/`cat helm/config.yaml | base64 -w0`/g" helm/secret.yaml | kubectl apply -f -
-
Copy the default values.yaml file
cd dell-csi-helm-installer && cp ../helm/csi-powerstore/values.yaml ./my-powerstore-settings.yaml
-
Edit the newly created file and provide values for the following parameters:
- volumeNamePrefix: defines the string added to each volume that the CSI driver creates
- nodeNamePrefix: defines the string added to each node that the CSI driver registers
- nodeIDPath: defines a path to file with a unique identifier identifying the node in the Kubernetes cluster
- externalAccess: defines additional entries for hostAccess of NFS volumes, single IP address and subnet are valid entries.
-
Install the driver using
csi-install.sh
bash script by running./csi-install.sh --namespace csi-powerstore --values ./my-powerstore-settings.yaml
Please refer to the section Testing Drivers
in the Documentation for more info.
For more detailed information on the driver, please refer to Container Storage Modules documentation.