VMware vSphere CSI Driver Operator

Overview

OKD can provision persistent volumes (PVs) using the Container Storage Interface (CSI) VMware vSphere driver for Virtual Machine Disk (VMDK) volumes.

vSphere CSI Driver Operator is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.

For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview/.

Familiarity with persistent storage and configuring CSI volumes is recommended when working with a CSI Operator and driver.

To create CSI-provisioned persistent volumes (PVs) that mount to vSphere storage assets, OKD, after this feature is enabled, installs the vSphere CSI Driver Operator and the vSphere CSI driver by default in the openshift-cluster-csi-drivers namespace.

  • vSphere CSI Driver Operator: After being enabled, the Operator provides a storage class, called thin-csi, that you can use to create persistent volumes claims (PVCs). The vSphere CSI Driver Operator supports dynamic volume provisioning by allowing storage volumes to be created on-demand, eliminating the need for cluster administrators to pre-provision storage.

  • vSphere CSI driver: The driver enables you to create and mount vSphere PVs.

OKD defaults to using an in-tree (non-CSI) plug-in to provision vSphere storage.

In future OKD versions, volumes provisioned using existing in-tree plug-ins are planned for migration to their equivalent CSI driver. CSI automatic migration should be seamless. Migration does not change how you use all existing API objects, such as persistent volumes, persistent volume claims, and storage classes. For more information about migration, see CSI automatic migration.

After full migration, in-tree plug-ins will eventually be removed in future versions of OKD.

About CSI

Storage vendors have traditionally provided storage drivers as part of Kubernetes. With the implementation of the Container Storage Interface (CSI), third-party providers can instead deliver storage plug-ins using a standard interface without ever having to change the core Kubernetes code.

CSI Operators give OKD users storage options, such as volume snapshots, that are not possible with in-tree volume plug-ins.

vSphere storage policy

The vSphere CSI Operator Driver storage class uses vSphere’s storage policy. OKD automatically creates a storage policy that targets datastore configured in cloud configuration:

  1. kind: StorageClass
  2. apiVersion: storage.k8s.io/v1
  3. metadata:
  4. name: thin-csi
  5. provisioner: csi.vsphere.vmware.com
  6. parameters:
  7. StoragePolicyName: "$openshift-storage-policy-xxxx"
  8. volumeBindingMode: WaitForFirstConsumer
  9. allowVolumeExpansion: false
  10. reclaimPolicy: Delete

Enabling the vSphere CSI Driver Operator

To enable the vSphere Container Storage Interface (CSI) Driver Operator, you must enable feature gates with the TechPreviewNoUpgrade feature set.

Procedure

  1. Enable feature gates with the TechPreviewNoUpgrade feature set (see NodesEnabling features using feature gates).

    After turning Technology Preview features on by using feature gates, they cannot be turned off and cluster upgrades are prevented.

  2. Verify the cluster operator storage:

    1. $ oc get co storage
    1. NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
    2. storage 4.9.0-0.nightly-2021-09-08-162532 True False False 4h26m
    • AVAILABLE should be “True”.

    • PROGRESSING should be “False”.

    • DEGRADED should be “False”.

  3. Verify the status of the pods in the openshift-cluster-csi-drivers namespace to ensure that they are running:

    1. $ oc get pod -n openshift-cluster-csi-drivers
    1. NAME READY STATUS RESTARTS AGE
    2. vmware-vsphere-csi-driver-controller-5646dbbf54-cnsx7 9/9 Running 0 4h29m
    3. vmware-vsphere-csi-driver-node-ch22q 3/3 Running 0 4h37m
    4. vmware-vsphere-csi-driver-node-gfjrb 3/3 Running 0 4h37m
    5. vmware-vsphere-csi-driver-node-ktlmp 3/3 Running 0 4h37m
    6. vmware-vsphere-csi-driver-node-lgksl 3/3 Running 0 4h37m
    7. vmware-vsphere-csi-driver-node-vb4gv 3/3 Running 0 4h37m
    8. vmware-vsphere-csi-driver-operator-7c7fc474c-p544t 1/1 Running 0 4h29m
  4. Verify that the storage class is installed:

    1. $ oc get storageclass
    1. NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
    2. thin (default) kubernetes.io/vsphere-volume Delete Immediate false 5h43m
    3. thin-csi csi.vsphere.vmware.com Delete WaitForFirstConsumer false 4h38m (1)
    1vSphere storage class

Additional resources