https://github.com/outscale/osc-bsu-csi-driver
The OSC BSU CSI Driver is a CSI driver for Kubernetes allowing the use of Outscale Block Storage Units (BSU) volumes
https://github.com/outscale/osc-bsu-csi-driver
maturity-graduated renovate
Last synced: about 1 month ago
JSON representation
The OSC BSU CSI Driver is a CSI driver for Kubernetes allowing the use of Outscale Block Storage Units (BSU) volumes
- Host: GitHub
- URL: https://github.com/outscale/osc-bsu-csi-driver
- Owner: outscale
- Created: 2019-11-06T12:31:21.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2026-01-20T14:30:04.000Z (about 1 month ago)
- Last Synced: 2026-01-20T22:53:20.257Z (about 1 month ago)
- Topics: maturity-graduated, renovate
- Language: Go
- Homepage:
- Size: 17.1 MB
- Stars: 10
- Watchers: 7
- Forks: 17
- Open Issues: 5
-
Metadata Files:
- Readme: docs/README.md
- Changelog: CHANGELOG-0.x.md
- Contributing: CONTRIBUTING.md
- License: LICENSES/Apache-2.0.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Notice: NOTICE
Awesome Lists containing this project
- awesome-repositories - outscale/osc-bsu-csi-driver - The OSC BSU CSI Driver is a CSI driver for Kubernetes allowing the use of Outscale Block Storage Units (BSU) volumes (Go)
README
[](https://docs.outscale.com/en/userguide/Open-Source-Projects.html) [](https://artifacthub.io/packages/search?repo=osc-bsu-csi-driver) [](https://discord.gg/HUVtY5gT6s)
# Outscale Block Storage Unit (BSU) CSI Driver
> NEW: Helm chart rewrite. See [migration guide](./helm/osc-bsu-csi-driver/migration.md) for more information.
---
## π Links
* Project repo: [github.com/outscale/osc-bsu-csi-driver](https://github.com/outscale/osc-bsu-csi-driver)
* Helm chart: [osc-bsu-csi-driver](https://artifacthub.io/packages/helm/osc-bsu-csi-driver/osc-bsu-csi-driver)
* π€ Contribution Guide: [CONTRIBUTING.md](../CONTRIBUTING.md)
* Join our community on [Discord](https://discord.gg/HUVtY5gT6s)
---
## π Table of Contents
* [Overview](#-overview)
* [Compatibility](#-compatibility)
* [Features](#-features)
* [Kubernetes Usage](#-kubernetes-usage)
* [Configuration (StorageClass Parameters)](#-configuration-storageclass-parameters)
* [Installation](#-installation)
* [Troubleshooting](#-troubleshooting)
* [Upgrade Notes](#-upgrade-notes)
* [Examples](#-examples)
* [Development](#-development)
* [Contributing](#-contributing)
* [License](#-license)
---
## π§ Overview
The **Outscale Block Storage Unit (BSU) CSI Driver** implements the Container Storage Interface ([CSI](https://github.com/container-storage-interface/spec/blob/master/spec.md)) for OUTSCALE BSU volumes. It allows container orchestrators (e.g., Kubernetes) to provision, attach, mount, snapshot, modify and expand BSU volumes.
> We currently maintain two branches: **v1.x** (`main`) and **v0.x** (`OSC-MIGRATION`). If you use **v0.x**, see the migration guide: [Upgrading from v0.x to v1.0.0](#upgrading-from-v0x-to-v100).
> v0.x will continue to receive bug and CVE fixes while in use, but **no new features** will be added.
---
## π Compatibility
CSI Specification Compatibility Matrix
| Plugin Version | Compatible CSI Version | Minimum K8s version |
| --------------- | ----------------------------------------------------------------------------------- | ------------------- |
| <= v0.0.14beta | [v1.3.0](https://github.com/container-storage-interface/spec/releases/tag/v1.3.0) | 1.16 |
| v0.0.15 | [v1.5.0](https://github.com/container-storage-interface/spec/releases/tag/v1.5.0) | 1.20 |
| v0.1.0 β v1.3.0 | [v1.5.0](https://github.com/container-storage-interface/spec/releases/tag/v1.5.0) | 1.20 |
| v0.1.0 β v1.6.x | [v1.8.0](https://github.com/container-storage-interface/spec/releases/tag/v1.8.0) | 1.20 |
| v1.7.x - v1.8.x | [v1.10.0](https://github.com/container-storage-interface/spec/releases/tag/v1.10.0) | 1.20 |
| v1.9.x | [v1.10.0](https://github.com/container-storage-interface/spec/releases/tag/v1.10.0) | 1.20 |
| v1.10.x | [v1.12.0](https://github.com/container-storage-interface/spec/releases/tag/v1.12.0) | 1.25 |
---
## β¨ Features
The CSI driver is based on two services:
* **Controller service**: runs as a `Deployment` on control-plane nodes; calls the Outscale API to create, modify, attach/detach and delete volumes and snapshots,
* **Node service**: runs as a `DaemonSet` on all nodes requiring volumes; mounts, formats and resize filesystems.
The following CSI capabilities are supported by the driver:
Plugin capabilities
| Service | Support | Comments |
| ---------- | ------- | -------- |
| CONTROLLER_SERVICE | β
| implements the controller service, handling calls the Outscale API to create/modify/attach/detach/delete volumes and snapshots |
| VOLUME_ACCESSIBILITY_CONSTRAINTS | β
| There are constraints limiting which volumes can be mounted on a specific node (e.g. belonging to the same subregion) |
| GROUP_CONTROLLER_SERVICE | β | Volume and snapshot groups are not supported |
| SNAPSHOT_METADATA_SERVICE | β | Snapshot metadata are not available |
| VolumeExpansion | Support | Comments |
| ---------- | ------- | -------- |
| ONLINE | β
| Volumes can be resized while mounted |
Controller capabilities
| Capability | Support | Comments |
| ---------- | ------- | -------- |
| CREATE_DELETE_VOLUME | β
| Volumes can be created |
| PUBLISH_UNPUBLISH_VOLUME | β
| Volumes need to be published on nodes |
| LIST_VOLUMES | β | Volumes cannot be listed |
| GET_CAPACITY | β | Total storage capacity is unknown |
| CREATE_DELETE_SNAPSHOT | β
| Snapshots can be created and used as a source for new volumes |
| LIST_SNAPSHOTS | β
| Snapshots can be listed |
| CLONE_VOLUME | β | Volumes cannot be cloned |
| PUBLISH_READONLY | β | Volumes cannot be published as read-only |
| EXPAND_VOLUME | β
| Volumes can be resized |
| LIST_VOLUMES_PUBLISHED_NODES | β | LIST_VOLUME/GET_VOLUME additional capability |
| VOLUME_CONDITION | β | The volume condition is not known |
| GET_VOLUME (alpha) | β | The status of a volume is not reported |
| SINGLE_NODE_MULTI_WRITER | β | Volumes cannot be accessed from multiple sources |
| MODIFY_VOLUME | β
| Volumes can be modified |
| GET_SNAPSHOT (alpha) | β | The status of a snapshot is not reported |
**Notes**
* **EXPAND_VOLUME**: offline (cold/detached) and online (hot/attached) volumes can be resized.
* **MODIFY_VOLUME**: `volumeType` and `iopsPerGB` can be updated via VolumeAttributeClasses on both offline and online volumes.
Node capabilities
| Capability | Support | Comments |
| ---------- | ------- | -------- |
| STAGE_UNSTAGE_VOLUME | β
| Volumes need to be staged on a node |
| GET_VOLUME_STATS | β
| The status of a volume is not reported |
| EXPAND_VOLUME | β
| Volumes can be resized |
| VOLUME_CONDITION | β | The volume condition is not known |
| SINGLE_NODE_MULTI_WRITER | β | Volumes cannot be accessed from multiple sources |
| VOLUME_MOUNT_GROUP | β | Volumes mount groups are not supported |
**Notes**
* **EXPAND_VOLUME**: offline (cold/detached) and online (hot/attached) volumes can be resized.
---
## βΈοΈ Kubernetes Usage
* **Static provisioning**: import existing BSU volumes and mount via PVCs.
* **Dynamic provisioning**: create on-demand volumes via PVCs.
* **Block volumes**: raw block device support for latency-sensitive apps (e.g., MySQL).
* **Volume snapshots**: create and restore from snapshots.
* **Volume encryption**: LUKS + `cryptsetup`.
**Prerequisites**
* A Kubernetes cluster within a compatible version range (see [Compatibility](#-compatibility)).
* Driver access to OUTSCALE APIs using AK/SK credentials (for example via an EIM user with an appropriate policy such as [`example-eim-policy.json`](./example-eim-policy.json)).
---
## π Configuration (StorageClass Parameters)
These parameters are passed via the StorageClass to `CreateVolumeRequest.parameters`:
StorageClass parameters
| Parameter | Values | Default | Description |
| ------------------------------------------------ | ------------------------ | ------- | ------------------------------------------------------------------ |
| `csi.storage.k8s.io/fstype` | `xfs`, `ext2/3/4` | `ext4` | Filesystem to format the volume with. |
| `type` | `io1`, `gp2`, `standard` | `gp2` | BSU volume type. |
| `iopsPerGB` | integer | β | Required when `type=io1`; IOPS per GiB. |
| `encrypted` | `true`, `false` | `false` | Enable LUKS encryption. |
| `csi.storage.k8s.io/node-stage-secret-name` | string | β | Name of the node-stage secret (see CSI docs). |
| `csi.storage.k8s.io/node-stage-secret-namespace` | string | β | Namespace of the node-stage secret (see CSI docs). |
| `kmsKeyId` | string | β | Not yet supported. |
| `luks-cipher` | string | β | LUKS cipher; default depends on `cryptsetup` version. |
| `luks-hash` | string | β | Password derivation hash; default depends on `cryptsetup` version. |
| `luks-key-size` | string | β | Encryption key size; default depends on `cryptsetup` version. |
**Notes**
* Parameter names are **case-sensitive**.
---
## π¦ Installation
See **[Deploy](./deploy.md)** for step-by-step installation (Helm/Manifests) and cluster-specific notes.
**Chart configuration**: see **[Helm Chart Configuration](./helm.md)**.
---
## π Troubleshooting
Common issues and diagnostics are covered in **[Troubleshooting](./troubleshooting.md)**.
---
## β¬οΈ Upgrade Notes
### Upgrading from v0.x to v1.0.0
Follow the [migration guide](./migration.md).
### Upgrading from v1.6 to v1.7
`maxBsuVolumes` is now computed automatically at driver startup. Manual configuration is usually unnecessary, even when multiple BSU volumes are mounted by the OS.
### Upgrading to Helm chart v2
Most values have been renamed, and need to be set again using the new names during the upgrade. Please refer to the [upgrade guide](../helm/osc-bsu-csi-driver/migration.md).
---
## π‘ Examples
* [Dynamic Provisioning](../examples/kubernetes/dynamic-provisioning)
* [Block Volume](../examples/kubernetes/block-volume)
* [Volume Snapshot](../examples/kubernetes/snapshot)
* [StorageClasses](../examples/kubernetes/storageclass)
* [Volume Resizing](../examples/kubernetes/resizing)
* [Volume Updates (VolumeAttributeClasses)](../examples/kubernetes/volume-attribute-class)
* [Encryption](../examples/kubernetes/encryption/)
---
## π§ͺ Development
See **[Development Process](./development.md)**.
---
## π€ Contributing
Contributions are welcome!
Please read our **[Contributing Guidelines](../CONTRIBUTING.md)** and **[Code of Conduct](../CODE_OF_CONDUCT.md)** before opening a pull request.
---
## π License
Β© 2025 Outscale SAS
This project complies with the [REUSE Specification](https://reuse.software/).
See [LICENSES/](../LICENSES) directory for full license information.