CSI Driver for Dell EMC PowerStore
Repository for CSI Driver for Dell EMC PowerStore
Description
CSI Driver for Dell EMC 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 Documentation, please go to Dell CSI Driver Documentation.
Support
The CSI Driver for Dell EMC PowerStore image, which is the built driver code, is available on DockerHub and is officially supported by Dell EMC.
The source code for CSI Driver for Dell EMC PowerStore available on GitHub is unsupported and provided solely under the terms of the license attached to the source code.
For clarity, Dell EMC does not provide support for any source code modifications.
For any CSI driver issues, questions or feedback, join the Dell EMC Container community.
Building
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
.
Runtime Dependencies
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.
Driver Installation
Please consult the Installation Guide
Below is a brief description of installation procedure using Helm. For more detailed installation instructions go to Helm Installation page of documentation.
As referenced in the guide, installation in a Kubernetes cluster should be done using the scripts within the dell-csi-helm-installer
directory. For more detailed information on the scripts, consult the README.md
Prerequisites
- 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
and helm
- 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.
Procedure
-
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 running kubectl 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 to globalID
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
Using Driver
Please refer to the section Testing Drivers
in the Documentation for more info.
Documentation
For more detailed information on the driver, please refer to Dell Storage Documentation
For a detailed set of information on supported platforms and driver capabilities, please refer to the Features and Capabilities Documentation