Installation Guide

  1. Set up a Kubernetes cluster following the official documentation.
  2. Proceed to the Prerequisite.
  3. Complete the base installation.
  4. Proceed with module installation.

Operator Installation

To deploy the Operator, follow the instructions available here.

For details on enabling NVMe/TCP, refer to the NVMe/TCP Support section in the Features page.

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.

    • 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"
        nasName : "nasServer"
        blockProtocol: "auto"
      
      • 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.
    • 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

    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: vxflexos
      namespace: vxflexos
    spec:
      version: v1.16.1
      driver:
        csiDriverType: "powerflex"
        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 OIDC secret for 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