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.
- Static Provisioning - Mount and unmount externally-created Lustre volumes within containers using Persistent Volumes (PV) and Persistent Volume Claims (PVC).
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 |
This describes methods of deploying the Lustre CSI driver in various environments.
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
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'
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
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.
- Note: The lustre filesystem defaults to being mounted at
- 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
- This will trigger a package build with the
- Go to GitHub releases and Draft a New Release
- Use the
tag
corresponding to the release and fill out Title/Features/Bugfixes/etc.