Code Monkey home page Code Monkey logo

lustre-csi-driver's Introduction

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:

  1. Update example_pv.yaml's volumeHandle value to the NID list of your Lustre filesystem's MGS.
  2. Deploy the PV: kubectl apply -f deploy/kubernetes/base/example_pv.yaml
  3. Deploy the PVC: kubectl apply -f deploy/kubernetes/base/example_pvc.yaml
  4. 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

  1. Checkout the project at the commit you wish to release
  2. Create a local annotated tag: git tag -a <tag> -m <message>
  3. Push this tag to remote: git push origin <tag>
    • This will trigger a package build with the <tag> version
  4. Go to GitHub releases and Draft a New Release
  5. Use the tag corresponding to the release and fill out Title/Features/Bugfixes/etc.

lustre-csi-driver's People

Contributors

ajfloeder avatar bdevcich avatar billhpe avatar inf0rmatiker avatar roehrich-hpe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lustre-csi-driver's Issues

Bad default imagePullPolicy setting

In the files deploy/kubernetes/lustre-csi-driver.yaml and deploy/kubernetes/lustre-csi-driver-kind.yaml, imagePullPolicy is being set to "Always". I do not think that this is a good default.

I would suggest that is is best to not set this at all, and accept the default policies from the kubernetes environment. We, for instance, are going to want to us "IfNotPresent" rather than "Always".

I would suggest that we omit the imagePullPolicy field from your manifests. Kubenetes' default behavior for selecting a policy when one is not specified seems pretty sane to me:

https://kubernetes.io/docs/concepts/containers/images/#imagepullpolicy-defaulting

and when we use labels that are note "latest", we at least would get the behaviour of "IfNotPresent". If you want to use "latest" and live on the bleeding edge, you can have "Always" selected for you automatically.

Usage documentation bugs

There are a couple bugs in the Usage example:

  1. The claimRef in the PV references a PVC in the lustre-csi-system namespace, but it should be default. Without this change, the example does not work.
  2. The PV and PVC have an access mode of ReadWriteOnce, but should be ReadWriteMany as Lustre supports this mode and is the common way to use Lustre

Need a lustre-csi-driver release

The readme references what is in this repo as v0.0.1 but there are no branches/tags with that designation and no container in ghcr.io with that designation.

I suggest doing a release (see here), which might also require updating the GitHub action to build and push the release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.