Installation Guide

  1. Set up a Kubernetes cluster following the official documentation.
  2. Complete the base installation.
  3. 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_ENABLED value 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 mdm attributes in config.yaml. Do not set this manually.

  • SDC Monitor: Enable the SDC monitor by setting the enable flag to true.

    • With Sidecar: Edit the HOST_PID and MDM fields with the host PID and MDM IPs.
    • Without Sidecar: Leave the enabled field set to false.

    Example CR: samples/storage_csm_powerflex_v2151.yaml

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

  1. 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.

  2. Set MDM IPs: Export the MDM IPs as a comma-separated list:

    export MDM_IP=xx.xxx.xx.xx,xx.xxx.xx.xx
    

    where xxx represents the actual IP address in your environment.

  3. Install SDC: Install the SDC per the Dell PowerFlex Deployment Guide:

    • For RPM environments, run:
    rpm -iv ./EMC-ScaleIO-sdc-*.x86_64.rpm
    

    Replace * with the SDC name corresponding to the PowerFlex version.

  4. 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


  1. Create namespace:

    kubectl create namespace vxflexos
    

    This command creates a namespace called vxflexos. You can replace vxflexos with any name you prefer.

  2. Create secret.yaml.

    a. Create a file called secret.yaml or 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.yaml includes all involved Powerflex arrays.
      b. After editing the file, run this command to create a secret called vxflexos-config.
      kubectl create secret generic vxflexos-config -n vxflexos --from-file=config=secret.yaml
    

    Use 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 -
    
  3. 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: true
    

    Refer 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:
    Parameters

    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.

  1. 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 Succeed state. If the status is not Succeed, see the Troubleshooting guide for more information.

  1. 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.com
    

    Refer Storage Class for different sample files.

    Run this command to create a storage class

    kubectl create -f < storage-class.yaml >
    
  2. Create Volume Snapshot Class:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: vxflexos-snapclass
    deletionPolicy: Delete
    

    Refer 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.


The driver and modules versions installable with the Container Storage Modules Operator Click Here