Go CSI driver for Pure Storage FlashArray over iSCSI: snapshots, clones, expansion, block RWX for KubeVirt. Prototype.
Go FlashArray over iSCSIopenkeel-csi-pure
The module
CSI driver in Go for Pure Storage FlashArray over iSCSI. It is a real driver, not a wrapper around another one: it maps CSI calls to array operations and attaches LUNs with csi-lib-iscsi. The standard sidecars (external-provisioner, attacher, snapshotter, resizer) do the rest, which gives VolumeSnapshot, cloning and expansion.
Go module: github.com/openkeel/openkeel-csi-pure, binary pure-csi, image openkeel/openkeel-csi-pure
Driver name: pure-iscsi.csi.openkeel.io
Array backends: rest2 (FlashArray REST 2.x, in-house client, the default) and pugo (REST 1.x through the community SDK github.com/devans10/pugo/flasharray), behind one interface (internal/array).
Excerpt from openkeel-csi-pure/README.md (in English).
How compatibility is tested
The Pure Storage FlashArray driver is a CSI driver, so it is checked against the CSI specification and Kubernetes storage conformance rather than against Cinder.
Client contract
In-process csi-sanity
The driver honours the CSI contract (kubernetes-csi csi-sanity, csi-test v5), GroupController included, with in-memory array and node fakes.
How it runs
make test or make sanity.
Latest result 79 specs pass; skipped specs cover capabilities not advertised. No iSCSI, multipath or real mounts exercised.
Source: openkeel-csi-pure/docs/TESTING.md
Unit and golden tests
Unit tests on simulated arrays
Group snapshots, idempotence of every call, sizes, restore and clone, publish, REST 2.x and REST 1.x clients and iSCSI path lookup behave as specified.
How it runs
make test (go test -race ./...) with simulated HTTPS arrays and a fake sysfs.
Source: openkeel-csi-pure/docs/TESTING.md
Scenario
csi-sanity and e2e on a real array
REST request shapes against a real Purity version, then the Kubernetes external storage e2e suite on real nodes.
How it runs
make sanity-real on a node, then make e2e driven by test/e2e/pure-iscsi.yaml.
Latest result Not yet run against a real FlashArray.
Source: openkeel-csi-pure/README.md
Scenario
csi-tester scenario catalogue
Realistic scenarios: access modes, expansion, snapshots, clones, I/O during pod deletion, drains, leftovers, with pass, fail or skip verdicts.
How it runs
openkeel-csi-tester in the cluster; csi-tester run --suite=all --allow-disruptive.
Latest result 18 scenarios pass against the simulated cluster in unit tests; not yet run against a real CSI driver.