-
Create Namespace.
kubectl create namespace powerstore
This command creates a namespace called powerstore. You can replace powerstore with any name you prefer.
-
Create secret.yaml.
a. Create a file called secret.yaml or pick a sample that has PowerStore array connection details:
arrays:
- endpoint: "https://11.0.0.1/api/rest"
globalID: "unique"
username: "user"
password: "password"
skipCertificateValidation: true
blockProtocol: "FC"
Note :
skipCertificateValidation flag is currently unsupported. Please refrain from changing its value.
- Update Parameters: Replace placeholders with actual values for your PowerStore array.
- Add Blocks: If you have multiple PowerStore arrays, add similar blocks for each one.
- Replication: If replication is enabled, make sure the
config.yaml includes all involved PowerStore arrays.
User Privileges
The username in secret.yaml must be from PowerStore’s authentication providers and have at least the Storage Operator role.
b. After editing the file, run this command to create a secret.yaml called powerstore-config.
kubectl create secret generic -n powerstore powerstore-config --from-file=config=secret.yaml
-
Install Driver
i. Create a CR (Custom Resource) for PowerStore using the sample files provided
Starting from CSM version 1.16, users can utilize the spec.version parameter for automatic image management. No ConfigMap or custom registry configuration needed. For more details click on Advanced Image Configuration Options section.
a. Minimal Configuration:
apiVersion: storage.dell.com/v1
kind: ContainerStorageModule
metadata:
name: powerstore
namespace: powerstore
spec:
version: v1.16.1
driver:
csiDriverType: "powerstore"
forceRemoveDriver: true
sample file for default settings. Modify if needed.
[OR]
b. Detailed Configuration: sample file for detailed settings or use Wizard to generate the sample file.
- Users should configure the parameters in CR. The following table lists the primary configurable parameters of the PowerStore driver and their default values:
Parameters
| Parameter |
Description |
Required |
Default |
replicas |
Controls the number of controller pods you deploy. If the number of controller pods is greater than the number of available nodes, the excess pods will be in pending state until new nodes are available for scheduling. Default is 2 which allows for Controller high availability. |
Yes |
2 |
namespace |
Specifies namespace where the driver will be installed |
Yes |
“powerstore” |
fsGroupPolicy |
Defines which FS Group policy mode to be used. Supported modes None, File and ReadWriteOnceWithFSType. In OCP <= 4.16 and K8s <= 1.29, fsGroupPolicy is an immutable field. |
No |
“ReadWriteOnceWithFSType” |
storageCapacity |
Enable/Disable storage capacity tracking feature |
No |
false |
Common parameters for node and controller |
|
|
|
X_CSI_POWERSTORE_NODE_NAME_PREFIX |
Prefix to add to each node registered by the CSI driver |
Yes |
“csi-node” |
X_CSI_FC_PORTS_FILTER_FILE_PATH |
To set path to the file which provides a list of WWPN which should be used by the driver for FC connection on this node |
No |
“/etc/fc-ports-filter” |
GOPOWERSTORE_DEBUG |
Enable/Disable gopowerstore library-level debugging. |
No |
false |
Controller parameters |
|
|
|
X_CSI_POWERSTORE_EXTERNAL_ACCESS |
allows specifying additional entries for hostAccess of NFS volumes. Both single IP address and subnet are valid entries |
No |
empty |
X_CSI_POWERSTORE_EXCLUSIVE_ACCESS |
controls whether only externalAccess entries are added to the NFS export |
No |
false |
X_CSI_NFS_ACLS |
Defines permissions - POSIX mode bits or NFSv4 ACLs, to be set on NFS target mount directory. |
No |
“0777” |
X_CSI_MULTI_NAS_FAILURE_THRESHOLD |
Number of consecutive FS creation failures after which a NAS is put into cooldown. Please refer Multi NAS Support for more details. |
No |
“5” |
X_CSI_MULTI_NAS_COOLDOWN_PERIOD |
Duration for which a NAS remains in cooldown once the threshold is reached. Please refer Multi NAS Support for more details. |
No |
“5m” |
Node parameters |
|
|
|
X_CSI_POWERSTORE_ENABLE_CHAP |
Set to true if you want to enable iSCSI CHAP feature |
No |
false |
ii. Create PowerStore custom resource:
kubectl create -f <input_sample_file.yaml>
This command will deploy the CSI PowerStore driver in the namespace specified in the input YAML file.
- Check driver pods status by running the appropriate command
kubectl get all -n powerstore
iii. Verify the installation as mentioned below
Check the status of the CR to verify if the driver installation is in the Succeed state. If the status is not Succeed, see the Troubleshooting guide for more information.
-
Create Storage Class
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: "powerstore-ext4"
provisioner: "csi-powerstore.dellemc.com"
parameters:
csi.storage.k8s.io/fstype: "ext4"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
Refer Storage Class for different sample files.
Run this command to create a storage class
kubectl create -f < storage-class.yaml >
-
Create Volume Snapshot Class
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: powerstore-snapshot
driver: "csi-powerstore.dellemc.com"
deletionPolicy: Delete
Refer Volume Snapshot Class for the sample files.
Run this command to create a volume snapshot class
kubectl create -f < volume-snapshot-class.yaml >
Note :
- “Kubelet config dir path” is not yet configurable in case of Operator based driver installation.
- Snapshotter and resizer sidecars are not optional. They are defaults with Driver installation.
- The VolumeJournal CRDs are installed by default as part of CSI PowerStore Driver installation and are required for Metro Volume configurations with resiliency enabled. To skip these CRDs from being installed, update the
X_CSM_DR_ENABLED environment variable to false.