Installation Guide
- Set up a Kubernetes cluster following the official documentation.
 - Complete the base installation.
 - Proceed with module installation.
 
Operator Installation
To deploy the Operator, follow the instructions available here.
Prerequisites
- If multipath is configured, ensure CSI-PowerFlex volumes are blacklisted by multipathd. See troubleshooting section for details.
 
SDC Deployment for Operator
- 
Overview: This feature deploys the SDC kernel modules on all nodes using an init container. PowerFlex can be deployed with or without SDC.
 - 
Enable/Disable SDC: Set the
X_CSI_SDC_ENABLEDvalue in the CR file. By default, SDC is enabled. - 
Manual Deployment: For unsupported OS versions, follow the manual SDC deployment steps. Refer to https://quay.io/repository/dell/storage/powerflex/sdc for supported OS versions.
 - 
MDM Value: The operator sets the MDM value for initContainers in the driver CR from the
mdmattributes inconfig.yaml. Do not set this manually. - 
SDC Monitor: Enable the SDC monitor by setting the
enableflag totrue.- With Sidecar: Edit the 
HOST_PIDandMDMfields with the host PID and MDM IPs. - Without Sidecar: Leave the 
enabledfield set tofalse. 
Example CR: samples/storage_csm_powerflex_v2151.yaml
 - With Sidecar: Edit the 
 
sideCars:
# sdc-monitor is disabled by default, due to high CPU usage
  - name: sdc-monitor
    enabled: false
    image: quay.io/dell/storage/powerflex/sdc:4.5.4
    envs:
    - name: HOST_PID
      value: "1"
    - name: MDM
      value: "10.xx.xx.xx,10.xx.xx.xx" #provide the same MDM value from secret
Manual SDC Deployment
For detailed PowerFlex installation procedure, see the Dell PowerFlex Deployment Guide. Install the PowerFlex SDC using this procedure:
Steps
- 
Download SDC: Download the PowerFlex SDC from Dell Online support. The filename is EMC-ScaleIO-sdc-*.rpm, where * is the SDC name corresponding to the PowerFlex installation version.
 - 
Set MDM IPs: Export the MDM IPs as a comma-separated list:
export MDM_IP=xx.xxx.xx.xx,xx.xxx.xx.xxwhere xxx represents the actual IP address in your environment.
 - 
Install SDC: Install the SDC per the Dell PowerFlex Deployment Guide:
- For RPM environments, run:
 
rpm -iv ./EMC-ScaleIO-sdc-*.x86_64.rpmReplace * with the SDC name corresponding to the PowerFlex version.
 - 
Add MDM IPs for Multi-Array support: run
/opt/emc/scaleio/sdc/bin/drv_cfg --add_mdm --ip 10.xx.xx.xx.xx,10.xx.xx.xx. 
CSI Driver Installation
- 
Create namespace:
kubectl create namespace vxflexosThis command creates a namespace called
vxflexos. You can replacevxflexoswith any name you prefer. - 
Create
secret.yaml.a. Create a file called
secret.yamlor pick a sample that has Powerflex array connection details:- username: "admin" password: "password" systemID: "2b11bb111111bb1b" endpoint: "https://127.0.0.2" skipCertificateValidation: true mdm: "10.0.0.3,10.0.0.4"- Update Parameters: Replace placeholders with actual values for your Powerflex array.
 - Add Blocks: If you have multiple Powerflex arrays, add similar blocks for each one.
 - Replication: If replication is enabled, make sure the 
secret.yamlincludes all involved Powerflex arrays.
b. After editing the file, run this command to create a secret calledvxflexos-config. 
kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=secret.yamlUse this command to replace or update the secret:
kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=secret.yaml -o yaml --dry-run=client | kubectl replace -f - - 
Install driver:
i. Create a CR (Custom Resource) for PowerFlex using the sample files provided
a. Minimal Configuration:
apiVersion: storage.dell.com/v1 kind: ContainerStorageModule metadata: name: vxflexos namespace: vxflexos spec: driver: csiDriverType: "powerflex" configVersion: v2.15.1 forceRemoveDriver: trueRefer the minimal sample files provided in respective CSM versions folder under samples here. Modify if needed.
[OR]
b. Detailed Configuration: Use the sample file for detailed settings.
Note: Configure SFTP settings based on PowerFlex Concepts
 
- Configure the parameters in the CR. The table below lists the primary configurable parameters of the PowerFlex driver and their default values:
 
ii . Run this command to create a PowerFlex custom resource:
  kubectl create -f <input_sample_file.yaml>
This command will deploy the CSI-PowerFlex driver in the namespace specified in the input YAML file.
- 
Verify the installation:
- Check if ContainerStorageModule CR is created successfully using the command below:
kubectl get csm/vxflexos -n vxflexos - Check the status of the CR to verify if the driver installation is in the 
Succeedstate. If the status is notSucceed, see the Troubleshooting guide for more information. 
 - Check if ContainerStorageModule CR is created successfully using the command below:
 
- 
Create Storage class:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: vxflexos annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: csi-vxflexos.dellemc.com reclaimPolicy: Delete allowVolumeExpansion: true parameters: storagepool: <STORAGE_POOL> systemID: <SYSTEM_ID> csi.storage.k8s.io/fstype: ext4 volumeBindingMode: WaitForFirstConsumer allowedTopologies: - matchLabelExpressions: - key: csi-vxflexos.dellemc.com/<SYSTEM_ID> values: - csi-vxflexos.dellemc.comRefer 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: vxflexos-snapclass deletionPolicy: DeleteRefer Volume Snapshot Class sample file.
Run this command to create a volume snapshot class
kubectl create -f < volume-snapshot-class.yaml > 
Note :
- Snapshotter and resizer sidecars are installed by default.