Lustre CSI Driver
Overview
This repository provides a Lustre Container Storage Interface (CSI), allowing Container Orchestration (CO)
frameworks to mount and unmount Lustre filesystems to/from containers in their purview.
Features
- Static Provisioning - Mount and unmount externally-created Lustre volumes within containers using Persistent
Volumes (PV) and Persistent Volume Claims
(PVC).
Kubernetes Compatibility Matrix
Lustre CSI Driver / Kubernetes Version |
v1.13-1.18 |
v1.25 |
v1.27 |
v1.28 |
v1.29 |
v0.0.10 |
yes |
yes |
yes |
|
|
v0.1.0 |
|
|
|
yes |
yes |
Deployment
This describes methods of deploying the Lustre CSI driver in various environments.
Helm
You can use Helm to manage the lustre CSI driver components:
- To deploy:
cd charts/ && helm install lustre-csi-driver lustre-csi-driver/ --values lustre-csi-driver/values.yaml
- To shut down:
helm delete lustre-csi-driver
Kubernetes
Deployment uses Kustomize to configure the deployment YAMLs in the kustomization base
deploy/kubernetes/base.
- To deploy using the Makefile:
make deploy
- To undeploy using the Makefile:
make undeploy
To deploy a specific overlay:
make deploy OVERLAY=overlays/<overlay>
Otherwise, you can just use the pre-built .yaml files in deploy/kubernetes:
kubectl apply -k 'https://github.com/HewlettPackard/lustre-csi-driver.git/deploy/kubernetes/overlays/kind/?ref=master'
Kind
This assumes your Kind environment is already set up and ready for a deployment.
A Kind kustomization overlay is defined by the YAMLs in deploy/kubernetes/overlays/kind.
- To deploy using the Makefile:
make kind-push && make kind-deploy
- To undeploy using the Makefile:
make kind-undeploy
Usage
This section provides examples for consuming a Lustre filesystem via a Kubernetes PersistentVolume
(PV) and PersistentVolumeClaim (PVC),
and finally an example of using the PVC in a simple application deployed as a Pod.
It assumed that a Lustre filesystem is already created, and that the Lustre CSI
driver is deployed on your Kubernetes cluster wherever the application pods are running (see Deployment for instructions).
Inspect the example_*.yaml
Kubernetes resources under deploy/kubernetes/base, then:
- Update example_pv.yaml's
volumeHandle
value to the NID list of your Lustre filesystem's MGS.
- Deploy the PV:
kubectl apply -f deploy/kubernetes/base/example_pv.yaml
- Deploy the PVC:
kubectl apply -f deploy/kubernetes/base/example_pvc.yaml
- Deploy the app:
kubectl apply -f deploy/kubernetes/base/example_app.yaml
- Note: The lustre filesystem defaults to being mounted at
/mnt/lus
within the container. Update this in example_app.yaml if you desire a different location.
Steps for Releasing a Version
- Checkout the project at the commit you wish to release
- Create a local annotated tag:
git tag -a <tag> -m <message>
- Push this tag to remote:
git push origin <tag>
- This will trigger a package build with the
<tag>
version
- Go to GitHub releases and Draft a New Release
- Use the
tag
corresponding to the release and fill out Title/Features/Bugfixes/etc.