https://github.com/outscale/osc-bsu-csi-driver
The OSC BSU CSI Driver enables Kubernetes to manage Outscale Block Storage Units (BSU), providing dynamic provisioning and persistent storage support on Outscale's cloud infrastructure.
https://github.com/outscale/osc-bsu-csi-driver
maturity-graduated
Last synced: 28 days ago
JSON representation
The OSC BSU CSI Driver enables Kubernetes to manage Outscale Block Storage Units (BSU), providing dynamic provisioning and persistent storage support on Outscale's cloud infrastructure.
- Host: GitHub
- URL: https://github.com/outscale/osc-bsu-csi-driver
- Owner: outscale
- License: apache-2.0
- Created: 2019-11-06T12:31:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-03-25T12:10:34.000Z (about 1 month ago)
- Last Synced: 2025-03-25T13:24:21.663Z (about 1 month ago)
- Topics: maturity-graduated
- Language: Go
- Homepage:
- Size: 16.9 MB
- Stars: 9
- Watchers: 9
- Forks: 17
- Open Issues: 13
-
Metadata Files:
- Readme: docs/README.md
- Changelog: CHANGELOG-0.x.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: code-of-conduct.md
- Security: SECURITY_CONTACTS
Awesome Lists containing this project
- awesome-repositories - outscale/osc-bsu-csi-driver - (Go)
README
[](https://docs.outscale.com/en/userguide/Open-Source-Projects.html)
# Outscale Block Storage Unit (BSU) CSI driver> **_NOTE:_** We are currently maintaining two versions of the plugin: v1.X (`master` branch) and v0.X (`OSC-MIGRATION` branch). If you are using the v0.X, we provide a guide to migrate to the new version [here](#migration-from-v0x-to-v100). The version v0.X will still receive bug and CVE fixes for as long it is used but no new features will be added.
[](https://artifacthub.io/packages/search?repo=osc-bsu-csi-driver)
## Overview
The Outscale Block Storage Unit Container Storage Interface (CSI) Driver provides a [CSI](https://github.com/container-storage-interface/spec/blob/master/spec.md) interface used by Container Orchestrators to manage the lifecycle of 3DS outscale BSU volumes.
## CSI Specification Compability Matrix
| Plugin Version | Compatible with CSI Version | Min K8s Version | Recommended K8s Version |
| ---------------- | --------------------------------------------------------------------------------- | --------------- | ----------------------- |
| <= v0.0.14beta | [v1.3.0](https://github.com/container-storage-interface/spec/releases/tag/v1.3.0) | 1.16 | 1.22 |
| v0.0.15 | [v1.5.0](https://github.com/container-storage-interface/spec/releases/tag/v1.5.0) | 1.20 | 1.23 |
| v0.1.0 - v1.3.0 | [v1.5.0](https://github.com/container-storage-interface/spec/releases/tag/v1.5.0) | 1.20 | 1.23 |
| v0.1.0 - v1.5.X | [v1.8.0](https://github.com/container-storage-interface/spec/releases/tag/v1.8.0) | 1.20 | 1.30 |## Features
The following CSI gRPC calls are implemented:
* **Controller Service**: CreateVolume, DeleteVolume, ControllerPublishVolume, ControllerUnpublishVolume, ControllerGetCapabilities, ControllerExpandVolume, ValidateVolumeCapabilities, CreateSnapshot, DeleteSnapshot, ListSnapshots
* **Node Service**: NodeStageVolume, NodeUnstageVolume, NodePublishVolume, NodeUnpublishVolume, NodeExpandVolume, NodeGetCapabilities, NodeGetInfo, NodeGetVolumeStats
* **Identity Service**: GetPluginInfo, GetPluginCapabilities, ProbeThe following CSI gRPC calls are **not yet** implemented:
* **Controller Service**: GetCapacity, ListVolumes, ControllerGetVolume
* **Node Service**: N/A
* **Identity Service**: N/A### CreateVolume Parameters
There are several optional parameters that can be passed into `CreateVolumeRequest.parameters` map:| Parameter | Values | Default | Description |
| ---------------------------------------------- | --------------------- | ------- | ----------- |
| csi.storage.k8s.io/fstype | xfs, ext2, ext3, ext4 | ext4 | File system type that will used to format the volume |
| type | io1, gp2, standard | gp2 | BSU volume type |
| iopsPerGB | | | I/O operations per second per GiB. Required when io1 volume type is specified |
| encrypted | true, false | false | Specify if we want to encrypt the disk or not |
| csi.storage.k8s.io/node-stage-secret-name | string | | The name of the secret (See [template](https://kubernetes-csi.github.io/docs/secrets-and-credentials-storage-class.html#node-stage-secret)) |
| csi.storage.k8s.io/node-stage-secret-namespace | string | | The namespace of the secret (See [template](https://kubernetes-csi.github.io/docs/secrets-and-credentials-storage-class.html#node-stage-secret)) |
| kmsKeyId | string | | Not yet supported |
| luks-cipher | string | | LUKS encryption cipher to use (See [doc](https://gitlab.com/cryptsetup/cryptsetup/blob/master/docs/on-disk-format-luks2.pdf) or `cryptsetup --help`). Default value depends on the cryptsetup version |
| luks-hash | string | | Derivation Password hash algorithm (See [doc](https://gitlab.com/cryptsetup/cryptsetup/blob/master/docs/on-disk-format-luks2.pdf) or `cryptsetup --help`). Default value depends on the cryptsetup version |
| luks-key-size | string | | Size of the encryption key (See [doc](https://gitlab.com/cryptsetup/cryptsetup/blob/master/docs/on-disk-format-luks2.pdf) or `cryptsetup --help`). Default value depends on the cryptsetup version |**Notes**:
* Parameter names are case sensitive.## Use with Kubernetes
Following sections are Kubernetes specific. If you are Kubernetes user, use followings for driver features, installation steps and examples.
### Features
* **Static Provisioning** - create a new or migrating existing BSU volumes, then create persistence volume (PV) from the BSU volume and consume the PV from container using persistence volume claim (PVC).
* **Dynamic Provisioning** - uses persistence volume claim (PVC) to request the Kuberenetes to create the BSU volume on behalf of user and consumes the volume from inside container.
* **Mount Option** - mount options could be specified in persistence volume (PV) to define how the volume should be mounted.
* **Block Volume** (beta since 1.14) - consumes the BSU volume as a raw block device for latency sensitive application eg. MySql.
* **Volume Snapshot** - creating volume snapshots and restore volume from snapshot.
* **Volume Encryption** - using Luks & cryptsetup.### Prerequisites
- Cluster K8S with compatible version (See [Version](README.md#csi-specification-compability-matrix))
- The plugin needs AK/SK to interact with Outscale BSU API, so you can create an AK/SK using an eim user, for example, with a proper permission by attaching [a policy like](./example-eim-policy.json)### Chart Configuration
See [Helm Chart Configuration](helm.md)### Installation
See [Deploy](deploy.md)### Troubleshooting
See [Troubleshooting](troubleshooting.md)### Migration from v0.X to v1.0.0
See [Migration Process](migration.md)## Examples
Make sure you follow the [Prerequisites](README.md#Prerequisites) before the examples:
* [Dynamic Provisioning](../examples/kubernetes/dynamic-provisioning)
* [Block Volume](../examples/kubernetes/block-volume)
* [Volume Snapshot](../examples/kubernetes/snapshot)
* [Configure StorageClass](../examples/kubernetes/storageclass)
* [Volume Resizing](../examples/kubernetes/resizing)
* [Encryption](../examples/kubernetes/encryption/)## Development
See [Development Process](development.md)