Install and configure IBM Cloud Drives

This document describes how to install and configure Portworx with an IBM Cloud drive.


Install Portworx

  1. Create a IBM VPC Gen-2 IKS or OpenShift cluster.

  2. Make sure that for IKS, ports 9001-9020 are open on nodes, and for OpenShift (ROKS), ports 17000-17020 are open on nodes. Portworx requires these ranges to be open on nodes to function normally.

  3. Run the following command on your IBM IKS/OpenShift cluster to get your CSI provisioner name:

    kubectl get csidriver
  4. Use any of the available StorageClasses on IKS/ROKS cluster; Portworx, Inc. recommends the ibmc-vpc-block-10iops-tier (default) StorageClass. Alternatively, you can create a Storage Class with provisioner set to the value that was returned by the command in the previous step. For example:

    kind: StorageClass
     annotations: "true"
     name: vpc-immediate-sc
    allowVolumeExpansion: true
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
  5. To configure your Portworx spec and Cloud Drives using the Operator, navigate to the spec generator and select Install and Run.

  6. Select New Spec, then choose Portworx Enterprise.

  7. Select IBM Cloud Platform and specify the disk size and storage class name for the drives you will be using.

  8. Run the following command to install the Portworx Operator deployment spec:

    kubectl apply -f ''
  9. Apply the generated spec with the following command:

    kubectl apply -f px-spec.yaml

Configure CSI cloud drives using DaemonSet

  1. Enable the CSI cloud drives feature flag by adding the environment variable ENABLE_CSI_DRIVE=true.
  2. To pass the StorageClass name to Portworx, configure each drive set with a different StorageClass using the -s option and the -kvdb_dev option:

    "-s", "sc=<storage_class_name>,size=<disk_size>"
    "-kvdb_dev", "sc=<storage_class_name>,size=<size>"


  1. Uninstall Portworx using the Operator or using DaemonSet.

  2. Wipe Portworx drives by deleting VolumeAttachments, PVCs, and PVs. To get VolumeAttachments, run the following command:

    kubectl get volumeattachment -n kube-system | grep -v NAME | grep va-pvc

    Then to delete those VolumeAttachments, run the following command:

    kubectl delete volumeattachment <volumeattachment_name>

    NOTE: If a node is no longer physically present in the cluster, the csi-attacher cannot remove VolumeAttachments. In this case, remove the finalzier first then delete the VolumeAttachment. Use the following command:

    kubectl patch volumeattachment  <volumeattachment_name> -n kube-system -p '{"metadata":{"finalizers": []}}' --type=merge && kubectl delete volumeattachment <volumeattachment_name>
  3. Identify the PVCs to be deleted with the following command:

    kubectl get pvc -n kube-system | grep -v NAME | grep px-do-not-delete
  4. Delete the PVCs with the following command:

     kubectl delete pvc <pvc_name> -n kube-system
    NOTE: Once deleted, PVCs should also remove any associated PVs. You may wish to confirm this manually. If the StorageClass used for provisioning Cloud drives has retain set to reclaimPolicy, then deleting PVC will not delete actual drive on IBM Cloud Platform. In that case, you can use the ibmcloud CLI or IBM Cloud dashboard to delete the volumes.
  5. If your StorageClass has RECLAIM POLICY: Retain, you must also delete the drives using the IBM Cloud UI.

Last edited: Monday, Aug 15, 2022