2.6 KiB
2.6 KiB
Container Storage Interface (CSI) for SeaweedFs
Container storage interface is an industry standard that will enable storage vendors to develop a plugin once and have it work across a number of container orchestration systems.
SeaweedFS is a simple and highly scalable distributed file system, to store and serve billions of files fast!
Deployment (Kubernetes)
Prerequisites:
- Already have a working Kubernetes cluster (includes
kubectl) - Already have a working SeaweedFS cluster
Utilize exiting SeaweedFS storage for your Kubernetes cluster (bare metal)
-
Git clone this repository and add your SeaweedFS master IP to
deploy/kubernetes/seaweeedfs-csi.yaml(2 places) -
Apply the container storage interface for SeaweedFS for your cluster
$ kubectl apply -f deploy/kubernetes/seaweeedfs-csi.yaml
- Ensure all the containers are ready and running
$ kubectl get po -n kube-system
- Testing: Create a persistant volume claim for 5GiB with name
seaweeedfs-csi-pvcwith storage classseaweeedfs-storage. The value, 5Gib does not have any significance as for SeaweedFS the whole filesystem is mounted into the container.
$ kubectl apply -f deploy/kubernetes/sample-seaweeedfs-pvc.yaml
- Verify if the persistant volume claim exists and wait until its the STATUS is
Bound
$ kubectl get pvc
- After its in
Boundstate, create a sample workload mounting that volume
$ kubectl apply -f deploy/kubernetes/sample-busybox-pod.yaml
- Verify the storage mount of the busybox pod
$ kubectl exec my-csi-app -- df -h
- Clean up
$ kubectl delete -f deploy/kubernetes/sample-busybox-pod.yaml
$ kubectl delete -f deploy/kubernetes/sample-seaweeedfs-pvc.yaml
$ kubectl delete -f deploy/kubernetes/seaweeedfs-csi.yaml
Developing and contributing
- Add and commit your changes after forking this repository
- Run unit tests
make test
- After its successfull, create a pull request.
Miscelleneous
| Description | Command |
|---|---|
| Docker command for launching seaweeedfs | docker run --cap-add SYS_ADMIN --security-opt apparmor:unconfined -v /dev/fuse:/dev/fuse --privileged -it seaweedfs /bin/bash |
License
Code of conduct
Participation in this project is governed by Kubernetes/CNCF code of conduct