Community Qualified Configurations
Community Qualified Configurations
Dell’s Cert-CSI is a tool to validate Dell CSI Drivers. It contains various test suites to validate the drivers and addresses the complexity involved with certifiying Dell CSI drivers in different customer environments.
Any orchestrator platform, operating system or version that is not mentioned in the support matrix but self-certified by the customer using cert-csi is supported for customer use.
You may qualify your environment for Dell CSI Drivers by executing the Run All Test Suites workflow.
Please submit your test results for our review here. If the results are a success, the orchestrator platform and version will be published under Community Qualified Configurations.
There are three methods of installing cert-csi
.
The executable from the GitHub Release only supports Linux. For non-Linux users, you must build the
cert-csi
executable locally.
NOTE: Please ensure you delete any previously downloaded Cert-CSI binaries, as each release uses the same name (
cert-csi-linux-amd64
). After installing the latest version, run thecert-csi -v
command to verify the installed version.
If you do not have root access on the target system, you can still install cert-csi to the ~/.local/bin directory:
If you want to collect csi-driver resource usage metrics, then please provide the namespace where it can be found and install the metric-server using this command (kubectl is required):
The following sections showing how to execute the various test suites use the executable for brevity. For executions requiring special behavior, such as mounting file arguments into the container image, it will be noted for the relevant command.
Log files are located in the
logs
directory in the working directory of cert-csi.
Report files are located in the default$HOME/.cert-csi/reports
directory.
Database (SQLite) file for test suites is<storage-class-name>.db
in the working directory of cert-csi.
Database (SQLite) file for functional test suites iscert-csi-functional.db
in the working directory of cert-csi.
NOTE: If using the container image, these files will be inside the container. If you are interested in these files, it is recommended to use the executable.
You can use cert-csi to launch a test run against multiple storage classes to check if the driver adheres to advertised capabilities.
To run the test suites you need to provide .yaml
config with storage classes and their capabilities. You can use example-certify-config.yaml
as an example.
Template:
Driver specific examples:
storageClasses.clone
is true
, executes the Volume Cloning suite.storageClasses.expansion
is true
, executes the Volume Expansion suite.storageClasses.expansion
is true
and storageClasses.rawBlock
is true
, executes the Volume Expansion suite with raw block volumes.storageClasses.snapshot
is true
, executes the Snapshot suite and the Replication suite.storageClasses.rawBlock
is true
, executes the Multi-Attach Volume suite with raw block volumes.storageClasses.rwx
is true
, executes the Multi-Attach Volume suite. (Storgae Class must be NFS.)storageClasses.volumeHealth
is true
, executes the Volume Health Metrics suite.storageClasses.rwop
is true
, executes the Multi-Attach Volume suite with the volume access mode ReadWriteOncePod
.storageClasses.ephemeral
exists, executes the Ephemeral Volumes suite.storageClasses.vgs
is true
, executes the Volume Group Snapshot suite.storageClasses.capacityTracking
exists, executes the Storage Class Capacity Tracking suite.NOTE: For testing/debugging purposes, it can be useful to use the
--no-cleanup
so resources do not get deleted.
NOTE: If you are using CSI PowerScale with SmartQuotas disabled, the
Volume Expansion
suite is expected to timeout due to the way PowerScale provisions storage. SetstorageClasses.expansion
tofalse
to skip this suite.
Withhold the --vsc
argument if Snapshot capabilities are disabled.
Run cert-csi certify -h
for more options.
If you are using the container image, the cert-config
file must be mounted into the container. Assuming your cert-config
file is /home/user/example-certify-config.yaml
, here are examples of how to execute this suite with the container image.
NOTE: For testing/debugging purposes, it can useful to use the
--no-cleanup
flag so resources do not get deleted.
volumeio-test-*
where resources will be created.WaitForFirstConsumer
, waits for Persistent Volume Claims to be bound to Persistent Volumes.Run cert-csi test vio -h
for more options.
scale-test-*
where resources will be created.Run cert-csi test scaling -h
for more options.
snap-test-*
where resources will be created.WaitForFirstConsumer
, waits for Persistent Volume Claim to be bound to Persistent Volumes.Run cert-csi test snap -h
for more options.
vgs-snap-test-*
where resources will be created.WaitForFirstConsumer
, waits for Persistent Volume Claim to be bound to Persistent Volumes.Note: Volume Group Snapshots are only supported by CSI PowerFlex and CSI PowerStore.
mas-test-*
where resources will be created.The storage class must be an NFS storage class. Otherwise, raw block volumes must be used.
Run cert-csi test multi-attach-vol -h
for more options.
replication-suite-*
where resources will be created.Run cert-csi test replication -h
for more options.
clonevolume-suite-*
where resources will be created.Run cert-csi test clone-volume -h
for more options.
volume-expansion-suite-*
where resources will be created.Raw block volumes cannot be verified since there is no filesystem.
If you are using CSI PowerScale with SmartQuotas disabled, the
Volume Expansion
suite is expected to timeout due to the way PowerScale provisions storage.
Run cert-csi test expansion -h
for more options.
block-snap-test-*
where resources will be created.WaitForFirstConsumer
, waits for Persistent Volume Claim to be bound to Persistent Volumes.Run cert-csi test blocksnap -h
for more options.
volume-health-metrics-*
where resources will be created.Run cert-csi test volumehealthmetrics -h
for more options.
Note: Make sure to enable healthMonitor for the driver’s controller and node pods before running this suite. It is recommended to use a smaller interval time for this sidecar.
functional-test
where resources will be created.Run cert-csi test ephemeral-volume -h
for more options.
--driver
is the name of a CSI Driver from the output ofkubectl get csidriver
(e.g, csi-vxflexos.dellemc.com). This suite does not delete resources on success.
If you are using the container image, the attr
file must be mounted into the container. Assuming your attr
file is /home/user/ephemeral-config.properties
, here are examples of how to execute this suite with the container image.
Sample ephemeral-config.properties (key/value pair)
functional-test
where resources will be created.capacity-tracking
.Storage class must use volume binding mode
WaitForFirstConsumer
.
This suite does not delete resources on success.
Run cert-csi test capacity-tracking -h
for more options.
To use custom images for creating containers pass an image config YAML file as an argument. The YAML file should have linux(test) and postgres images name with their corresponding image URL. For example
Example:
To use this feature, run cert-csi with the option --image-config /path/to/config.yaml
along with any other arguments.
All Kubernetes end to end tests require that you provide the driver config based on the storage class you want to test and the version of the kubernetes you want to test against. These are the mandatory parameters that you can provide in command like..
To run kubernetes end-to-end tests, run the command:
$HOME/reports
directory by default if user doesn’t mention the report path.$HOME/reports/execution_[storage class name].log
info.log
, error.log
To generate test report from the database, run the command:
To generate tabular report from the database, run the command:
To generate XML report from the database, run the command:
To specify test report folder path, use –path option as follows:
To generate report from multiple databases, run the command:
To list all test runs, run the command:
To specify test report folder path, use –path option as follows:
To run tests with driver resource usage metrics enabled, run the command:
To run tests with custom hooks, run the command:
You can interrupt the application by sending an interruption signal (for example pressing Ctrl + C). It will stop polling and try to cleanup resources.
Text report example
Tabular Report example
Community Qualified Configurations