Skip to main content
Version: 26.2

PX-CSI StorageClass Reference

PX-CSI uses standard Kubernetes StorageClass resources with a set of PX-CSI-specific parameters for FlashArray and FlashBlade backend storage.

StorageClass

FieldDescriptionType
apiVersionThe Kubernetes API version for the StorageClass object.string
kindThe kind of Kubernetes object, always StorageClass.string
metadata.nameThe name of the StorageClass.string
provisionerSpecifies the CSI driver used for dynamic provisioning. For PX-CSI, this value is pxd.portworx.com.string
reclaimPolicyDefines what happens to a volume when released from its claim. Refer to the Kubernetes documentation for options Delete or Retain.string
volumeBindingModeControls when volume binding and dynamic provisioning occur. Refer to the Kubernetes documentation for options Immediate or WaitForFirstConsumer.string
allowVolumeExpansionSpecifies whether the volume can be dynamically resized.boolean
mountOptionsA list of mount options supported by the backend. Common examples include nfsvers=3, tcp, and nfsvers=4.1.array
parametersPX-CSI-specific configuration parameters described below.object

parameters fields

Common

FieldDescriptionTypeRequired/Optional
parameters.backendDefines the storage backend for the volume. Accepted values:
- pure_block (FlashArray block)
- pure_fa_file (FlashArray File Services)
- pure_file (FlashBlade file)
stringRequired
parameters.portworx.io/pure-array-idSpecifies the array ID to target a specific FlashArray or FlashBlade for volume provisioning. Use this to control volume placement when multiple arrays are connected to the cluster. This setting can be overridden by the persistent volume claim (PVC) annotation of the same name. For more information, see Control volume placement using array IDs.stringOptional

FlashArray block volumes

FieldDescriptionTypeRequired/Optional
parameters.max_iopsSets a QoS IOPS cap. Range: 100 – 100,000,000.stringOptional
parameters.max_bandwidthSets a QoS bandwidth cap. Units: K, M, G (for example, 10G).stringOptional
parameters.csi.storage.k8s.io/fstypeThe file system type to create on the volume (for example, ext4, xfs).stringOptional
parameters.secureWhen true, enables volume encryption. Requires cluster-wide key setup.booleanOptional
parameters.pure_fa_pod_nameSets the FlashArray pod name to control volume placement. This parameter is:
  • Required for ActiveCluster stretched pods, see Use FlashArray ActiveCluster
  • Required for secure multi-tenancy (realms)
  • Optional for controlling volume placement across multiple arrays
stringRequired for ActiveCluster and realms

FlashArray file services

FieldDescriptionTypeRequired/Optional
parameters.pure_nfs_policyThe name of a pre-created FlashArray NFS policy.stringRequired
parameters.pure_fa_file_systemThe FlashArray file system name where directories or volumes are created.stringRequired
parameters.pure_quota_policyAn optional quota policy name for enforcing size limits.stringOptional
parameters.pure_nfs_endpointOverrides the FlashArray NFSEndPoint from the configuration for this class.stringOptional

To enable NFS over TLS for FlashArray file services, add xprtsec=tls to mountOptions. This requires Purity version 6.10.6 or later and Linux kernel 6.12 or later on worker nodes with nfs-utils, ktls-util (tlshd), and openssl installed.

FlashBlade file systems

FieldDescriptionTypeRequired/Optional
parameters.pure_export_rulesNFS export rules that apply to the directory (for example, *(rw) or *(rw,no_root_squash)).
Note: If you are using pure_nfs_policy, do not specify this field.
stringOptional
parameters.pure_nfs_policyName of the NFS export policy on FlashBlade. Required for FlashBlade with secure multi-tenancy and multi-server.stringRequired for secure multi-tenancy and multi-server
parameters.pure_nfs_serverName of the NFS server on FlashBlade where the file system is exported.
Note: Use with pure_nfs_policy.
stringRequired for secure multi-tenancy and multi-server.
parameters.pure_nfs_endpointUse this field to override the NFS endpoint specified in pure.json.stringOptional
parameters.pure_nfs_export_rules_clientSpecifies the client IP address, subnet, hostname, FQDN, or wildcard for NFS export rules when you use multi-server or secure multi-tenancy. Example: 10.0.0.0/24 or *. Default: *stringOptional
parameters.pure_nfs_export_rules_accessThe NFS export access rule. Values can be no-squash, root-squash, or all-squash. Default is root-squashstringOptional
parameters.pure_fb_node_groupSpecifies the node group name for FlashBlade//EXA deployments (such as group-05). When specified, the volume is provisioned using node group–based provisioning instead of size-based provisioning.stringRequired for FlashBlade//EXA
parameters.pure_fb_hard_limit_enabledEnables or disables hard quota limits on the file system. Valid values: true or false. Default: true.
Note: For FlashBlade//EXA, set to "false".
stringOptional
parameters.pure_fb_snapshot_directory_enabledEnables or disables the snapshot directory. Valid values: true or false. Default: false.
Note: For FlashBlade//EXA, set to "false".
stringOptional
parameters.pure_fb_nfsv3_enabledEnables or disables the NFSv3 protocol. Valid values: true or false. Default: true.
Note: For FlashBlade//EXA, default is "false".
stringOptional
parameters.pure_fb_nfsv4_1_enabledEnables or disables the NFSv4.1 protocol. Valid values: true or false. Default: true.
Note: For FlashBlade//EXA, set to "true".
stringOptional
parameters.pure_fb_fast_remove_directory_enabledEnables or disables fast directory removal for FlashBlade file systems. When set to "true", PX-CSI automatically deletes directory contents when you delete a PVC. Valid values: true or false. Default: false.stringOptional

To enable NFS over TLS for FlashBlade file systems, add xprtsec=tls to mountOptions and specify pure_nfs_policy that references an export rule with TLS enabled. For instructions on creating NFS export policies and rules, see Creating NFS Export Policies and Rules in the FlashBlade Admin Guide. This requires Purity version 4.6.0 or later and Linux kernel 6.12 or later on worker nodes with nfs-utils, ktls-util (tlshd), and openssl installed.

FlashBlade//EXA configuration requirements

For FlashBlade//EXA deployments, the following parameters are required:

  • pure_fb_node_group: Must specify the node group name (for example, group-05)
  • pure_fb_nfsv4_1_enabled: Must be set to "true"
  • pure_fb_nfsv3_enabled: Must be set to "false"
  • pure_fb_snapshot_directory_enabled: Must be set to "false"
  • pure_fb_hard_limit_enabled: Must be set to "false"

Additionally, for HPC workloads, use nconnect=16 in mountOptions to enable multiple TCP connections for improved performance.

FlashBlade secure multi-tenancy and multi-server requirements

Both features require PX-CSI 26.2.0 or later and Purity 4.6.1 or later.

  • Secure multi-tenancy
    • Specify the Realm field in the FlashBlade entry in pure.json.
    • The NFS policy and server specified in StorageClass parameters must exist within the Realm.
  • Multi-server
    • Does not require the Realm field in pure.json.
    • The NFS policy and server must exist on the FlashBlade array.
  • Both features
    • Requires pure_nfs_policy and pure_nfs_server StorageClass parameters. The pure_nfs_endpoint parameter is optional and overrides the NFS endpoint configured in pure.json.
    • If you are using pure_nfs_policy, do not specify pure_export_rules in the StorageClass.

Defaults created by PX-CSI

PX-CSI automatically deploys default StorageClass objects during installation:

StorageClassBackendPurpose
px-fa-direct-accessFlashArrayFlashArray block volume provisioning
px-fb-direct-access-nfsv3FlashBladeFlashBlade NFSv3 provisioning
px-fb-direct-access-nfsv4FlashBladeFlashBlade NFSv4 provisioning

To view available StorageClass objects, run the following command:

kubectl get sc

Example StorageClass

FlashArray StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: px-fa-direct-access
provisioner: pxd.portworx.com
allowVolumeExpansion: true
parameters:
backend: pure_block
reclaimPolicy: Delete
volumeBindingMode: Immediate

FlashBlade StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: px-fb-direct-access-nfsv4
provisioner: pxd.portworx.com
parameters:
backend: pure_file
pure_export_rules: '*(rw)'
mountOptions:
- nfsvers=4.1 # NFS version: 3 | 4.1
- tcp
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true