{"id":19546073,"url":"https://github.com/hewlettpackard/lustre-csi-driver","last_synced_at":"2025-10-23T17:39:45.406Z","repository":{"id":37073785,"uuid":"489084020","full_name":"HewlettPackard/lustre-csi-driver","owner":"HewlettPackard","description":"A Lustre container storage interface that allows Kubernetes to mount/unmount provisioned Lustre filesystems into containers.","archived":false,"fork":false,"pushed_at":"2025-04-24T13:37:17.000Z","size":5277,"stargazers_count":33,"open_issues_count":0,"forks_count":3,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-24T14:43:45.303Z","etag":null,"topics":["containers","csi","filesystems","hpe","kubernetes","lustre","storage"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HewlettPackard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-05T18:25:41.000Z","updated_at":"2025-04-24T13:37:18.000Z","dependencies_parsed_at":"2024-03-08T23:22:48.028Z","dependency_job_id":"14c980ca-42e9-4769-9b37-7e95b2279369","html_url":"https://github.com/HewlettPackard/lustre-csi-driver","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Flustre-csi-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Flustre-csi-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Flustre-csi-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Flustre-csi-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HewlettPackard","download_url":"https://codeload.github.com/HewlettPackard/lustre-csi-driver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251041520,"owners_count":21527210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","csi","filesystems","hpe","kubernetes","lustre","storage"],"created_at":"2024-11-11T03:43:03.519Z","updated_at":"2025-10-23T17:39:45.401Z","avatar_url":"https://github.com/HewlettPackard.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lustre CSI Driver\n\n- [Overview](#overview)\n- [Features](#features)\n- [Kubernetes Compatibility Matrix](#kubernetes-compatibility-matrix)\n- [Deployment](#deployment)\n  - [Helm](#helm)\n  - [Kubernetes](#kubernetes)\n  - [Kind](#kind)\n- [Usage](#usage)\n\n## Overview\n\nThis repository provides a [Lustre](https://www.lustre.org/) Container Storage Interface ([CSI](https://github.com/container-storage-interface/spec/blob/master/spec.md)), allowing Container Orchestration (CO)\nframeworks to mount and unmount Lustre filesystems to/from containers in their purview.\n\n## Features\n\n- **Static Provisioning** - Mount and unmount externally-created Lustre volumes within containers using Persistent\n  Volumes ([PV](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)) and Persistent Volume Claims \n  ([PVC](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#PersistentVolumeClaim:~:text=PersistentVolumeClaim%20(PVC))).\n\n## Kubernetes Compatibility Matrix\n\n| Lustre CSI Driver / Kubernetes Version | v1.29-v1.34\n|----------------------------------------|------------\n| v0.1.8+  | yes\n\n## Deployment\n\nThis describes methods of deploying the Lustre CSI driver in various environments.\n\n### Helm\n\nYou can use Helm to manage the lustre CSI driver components:\n\n- To pick a release: `git tag`. Then pick a tag with `git checkout $RELEASE_TAG`\n- To deploy: `cd charts/ \u0026\u0026 helm install lustre-csi-driver lustre-csi-driver/ --values lustre-csi-driver/values.yaml`\n- To shut down: `helm delete lustre-csi-driver`\n\nFor a development build, to install a specific image tag, use the following:\n\n- `helm install lustre-csi-driver lustre-csi-driver/ --values lustre-csi-driver/values.yaml --set deployment.tag=0.0.0.126-4fee`\n\n### Kubernetes\n\nDeployment uses [Kustomize](https://kustomize.io/) to configure the deployment YAMLs in the [kustomization base](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/#bases-and-overlays)\n[deploy/kubernetes/base](./deploy/kubernetes/base).\n\n- To deploy using the Makefile: `make deploy`\n- To undeploy using the Makefile: `make undeploy`\n\nTo deploy a specific [overlay](./deploy/kubernetes/overlays):\n\n- `make deploy OVERLAY=overlays/\u003coverlay\u003e`\n\n### Kind\n\nThis assumes your [Kind](https://kind.sigs.k8s.io/) environment is already set up and ready for a deployment.\nA Kind [kustomization overlay](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/#bases-and-overlays) is defined by the YAMLs in [deploy/kubernetes/overlays/kind](./deploy/kubernetes/overlays/kind).\n\n- To deploy using the Makefile: `make kind-push \u0026\u0026 make kind-deploy`\n- To undeploy using the Makefile: `make kind-undeploy`\n\n## Usage\n\nThis section provides examples for consuming a Lustre filesystem via a Kubernetes [PersistentVolume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)\n(PV) and [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#lifecycle-of-a-volume-and-claim) (PVC),\nand finally an example of using the PVC in a simple application deployed as a Pod.\n\nIt assumed that a Lustre filesystem is already created, and that the Lustre CSI\ndriver is deployed on your Kubernetes cluster wherever the application pods are running (see [Deployment](#deployment) for instructions).\n\nInspect the `example_*.yaml` Kubernetes resources under [deploy/kubernetes/base](./deploy/kubernetes/base), then:\n\n1. Update [example_pv.yaml](./deploy/kubernetes/base/example_pv.yaml)'s `volumeHandle` value to the NID list of your Lustre filesystem's MGS.\n2. Deploy the PV:  `kubectl apply -f deploy/kubernetes/base/example_pv.yaml`\n3. Deploy the PVC: `kubectl apply -f deploy/kubernetes/base/example_pvc.yaml`\n4. Deploy the app: `kubectl apply -f deploy/kubernetes/base/example_app.yaml`\n   - 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.\n\n## Steps for Releasing a Version\n\nTo perform a release, please use the tools and documentation described in [Releasing NNF Software](https://nearnodeflash.github.io/latest/repo-guides/release-nnf-sw/release-all/#nnf-software-overview). The steps and tools in that guide will ensure that the new release is properly configured to self-identify and to package properly with new releases of the NNF software stack.\n\nThe following old steps can be used if this project is ever disassociated from the NNF software stack:\n\n1. Checkout the project at the commit you wish to release\n2. Create a local annotated tag: `git tag -a \u003ctag\u003e -m \u003cmessage\u003e`\n3. Push this tag to remote: `git push origin \u003ctag\u003e`\n   - This will trigger a package build with the `\u003ctag\u003e` version\n4. Go to [GitHub releases](https://github.com/HewlettPackard/lustre-csi-driver/releases) and **Draft a New Release**\n5. Use the `tag` corresponding to the release and fill out Title/Features/Bugfixes/etc.\n\n## Read-Only Mount\n\nWhen considering read-only mounts, recall that on a single host, Linux does not allow the same volume to be mounted \"rw\" on one mountpoint and \"ro\" on another mountpoint.\n\nDetails:\n\n- Pod `.spec.volumes[].persistentVolumeClaim.readOnly`:\n  Volume is mounted with \"ro\" mount option. This affects all containers in the pod. CRI-O knows it's read-only and doesn't attempt the selinux relabel.\n\n- Pod `.spec.containers[].volumeMounts[].readOnly`:\n  Volume is mounted with \"rw\" mount option. But it's read-only in this individual container.\n\n- PV `.spec.csi.readOnly`:\n  This is passed to the ControllerPublishVolumeRequest endpoint in the CSI driver. This CSI driver does not support this endpoint.\n\n- PV `.spec.mountOptions`\n  Additional mount options. Supported with csi, iscsi, and nfs. If \"ro\" is specified, then the volume is mounted with \"ro\" mount option. CRI-O doesn't know it's read-only and wants to do the selinux relabel, but cannot write to the volume, and it fails to setup the container.\n\n- PVC does not have an equivalent of PV's `.spec.mountOptions`.\n\n- PV `.spec.accessModes` does not control or constrain the mount options. This is used to\nadvise the k8s scheduler about pod placement.\n\n- PVC `.spec.accessModes` is loosely used to match a PV. The PV access mode is what matters.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhewlettpackard%2Flustre-csi-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhewlettpackard%2Flustre-csi-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhewlettpackard%2Flustre-csi-driver/lists"}