https://github.com/scaleoutsean/solidfire-csi
Community-backed SolidFire CSI for NetApp SolidFire iSCSI storage clusters, primarily with Kubernetes
https://github.com/scaleoutsean/solidfire-csi
csi driver iscsi kubernetes netapp nomad solidfire storage
Last synced: 2 months ago
JSON representation
Community-backed SolidFire CSI for NetApp SolidFire iSCSI storage clusters, primarily with Kubernetes
- Host: GitHub
- URL: https://github.com/scaleoutsean/solidfire-csi
- Owner: scaleoutsean
- License: apache-2.0
- Created: 2026-01-28T14:00:40.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2026-03-30T08:43:38.000Z (3 months ago)
- Last Synced: 2026-03-30T09:38:25.033Z (3 months ago)
- Topics: csi, driver, iscsi, kubernetes, netapp, nomad, solidfire, storage
- Language: Go
- Homepage: https://scaleoutsean.github.io/2026/03/06/solidfire-csi-driver.html
- Size: 293 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-solidfire - SolidFire CSI
README
# SolidFire CSI Driver
This community project implements an optimized SolidFire CSI driver for NetApp SolidFire storage clusters.
How to choose?
- Need a supported and certified CSI driver for SolidFire: Trident CSI
- Kubernetes on OpenStack: Cinder CSI with SolidFire Cinder driver
- Other: **SolidFire CSI**
There's nothing that prevents you from using SolidFire CSI with another CSI driver for SolidFire, even from the same Kubernetes cluster. Cinder CSI and Trident CSI users: you'd need to have multipath tools (Trident CSI forces that requirement on SolidFire users). Otherwise, SolidFire CSI works fine (and in fact better) with LACP and without `multipath-tools`.
SolidFire CSI is very easy to move to/from without recreating data, because it's a simple, stateless CSI driver.
## Features
- **Simple:** smaller, simpler, lighter
- **Multi-tenancy:** Uses `StorageClass` parameters/secrets instead of "backends", enabling multiple tenants/clusters.
- **Stateless:** No persistent backend configuration file. We use light, ephemeral caching.
- **Quotas:** Local limit enforcement for `max_volume_count` and `max_total_capacity` per Tenant (configured in StorageClass).
- **Snapshots & Clones:** Native SolidFire snapshot and clone support.
- **Quality of Service:** Proper QoS support through QoS Policy IDs - never waste IOPS or come up short because you can't retype your PVCs.
- **Predictable and correct volume scheduling:** Pick the exact QoS policy ID you want for a PVC; no more guesswork with overlapping QoS ranges.
- **Superior manageability:** Enhanced use of SolidFire [volume attributes](https://scaleoutsean.github.io/2024/07/02/solidfire-volume-attributes-from-trident-and-other-apps.html). Volume and Snapshot Attributes are first class citizens in SolidFire CSI.
- **PVC retyping:** Modify volume's QoS Policy ID to change its performance - great for backup, and on-demand performance upgrades (or downgrades)!
- **Delete or Purge:** Lets you optionally take advantage of SolidFire volume restore feature to restore data from deleted volumes (requires SolidFire administrator's action before volume is auto-purged (8h)). Simply specify "delete" behavior (SolidFire volume delete option) in your Storage Class.
- **Wider filesystem support:** ext4, XFS, Btrfs.
- **Observability:** Automatic "lazy discovery" of storage array state keeps track of global metrics (Total PVCs, Total Capacity, Total MinIOPS) across all tenants via `/metrics`. Metrics are by default disabled to eliminate the need for network access to SolidFire CSI controller.
- **High Availability:** Fully stateless controller design supports multiple replicas (Active/Standby) using standard sidecar leader election.
- **Auto-Discard:** Automatically mounts volumes with `discard` enabled. No need to micromanage StorageClass options; blocks are freed immediately for SolidFire efficiency, backup efficiency and SSD health.
- **Dynamic Limits:** Automatically fetches cluster limits (e.g., Max Volume Size, Max Snapshots) to enforce bounds correctly across different SolidFire models (Demo VM vs. Production).
- **Other goodies:** Takes advantage of other SolidFire strengths without creating bloat or unresonable compromises. For example, Consistency Group Snapshots are supported and LUKS is not.
## Requirements
- Kubernetes 1.25+ (developed and tested on 1.34 and 1.35) with optional multipath-tools
- iSCSI tools installed on worker nodes (`open-iscsi` or `iscsi-initiator-utils`)
- SolidFire Element OS 12.5+ (CHAP algorithm `MD5` for 12.5 and `SHA3-256` for higher versions)
## Getting started
- Go to ./helm/solidfire-csi, copy values.yaml to myvalues.yaml, edit myvalues.yaml and deploy Helm chart for SolidFire CSI
- Read [DOCUMENTATION](./DOCUMENTATION.md) with step-by-step instructions
## Acknowledgement
- John Griffith for vision and wisdom in all matters Cinder and CSI, `solidfire-go` and `solidfire-sdk` (which this CSI driver builds upon) available under the Apache 2.0 license
- Some of the SolidFire driver source code from NetApp Trident project (Apache 2.0)
## SolidFire CSI contributors
- scaleoutsean (Sean) - maintainer (design, planning, testing, documentation)
- AI coding assistants
## License
- Apache 2.0