CSI Driver for S3 via FUSE
https://github.com/irbekrm/csi-s3.git
CSI Driver for S3 via FUSE
:warning: This project is in pre-alpha state. It was built with a goal to learn more about CSI Drivers and is not meant to be used in production. See below for how to try it out :warning:
A Kubernetes CSI driver for creating Persistent Volumes backed by S3.
csi-s3 is implemented according to the CSI spec.
It exposes a gRPC API over a Unix Domain Socket. The RPCs in this API are called by the kubelet as well as the various CSI sidecar containers.
csi-s3 has to be deployed as a Daemonset (it needs to be running on the node to be able to mount the volume)
Mounting S3 to filesystem is possible via FUSE.
csi-s3 invokes higher level tools that do the actual mounting.
This project can only be built for Linux targets because of a dependency on a Linux-specific filesystem package.
To run the unit tests (using Docker) on any OS:
make testIt is only possible to build for Linux targets.
Run make build, this will produce csi-s3 binary in outputs directory
This project uses generated gomock mocks for unit testing. The generated mocks are at /mocks
To regenerate the mocks:
make generatecsi-s3 driver (as a Daemonset), RBAC resources and a CSIDriver custom resourcekubectl apply -f deployments/
csi-s3 and use itSee /deployments/debug for an example of how to run csi-s3 and manually test the API.
The gRPC API of csi-s3 implements a subset of the functionality described by the CSI spec
Currently implemented RPCs from the CSI spec are: