Git Product home page Git Product logo

oras-csi's Introduction

CSI ORAS Driver

This repository is a test to create a CSI driver into one that uses ORAS to generate a cluster-level cache of artifacts. Read about the use cases or jump in!

	██████╗ ██████╗  █████╗ ███████╗       ██████╗███████╗██╗
	██╔═══██╗██╔══██╗██╔══██╗██╔════╝      ██╔════╝██╔════╝██║
	██║   ██║██████╔╝███████║███████╗█████╗██║     ███████╗██║
	██║   ██║██╔══██╗██╔══██║╚════██║╚════╝██║     ╚════██║██║
	╚██████╔╝██║  ██║██║  ██║███████║      ╚██████╗███████║██║
	 ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚══════╝       ╚═════╝╚══════╝╚═╝

Background

A CSI or "Container storage interface" is a standard plugin that we can instantiate to make it easy for others to use it in their Kubernetes clusters. At least, this is my current level of understanding. What I want to get working is an emphemeral, inline plugin that sits alongside a node and can keep a local cache of artifacts (e.g., containers or data) to be used between different pod runs (e.g., an indexed job).

For documentation, see our early docs folder.

TODO

  • add more kubernetes app labels?
  • test with kind, write up tutorial (https issue too)
  • add concept of cleanup (on level of CSIDriver and pod?)
  • what about more customization to pull (e.g., pull if newer?)
  • everything must be tested, with tested examples
  • custom naming / locations for mount? Or should be handled by app?
  • better levels / control for logging

Planning

These are ideas / features that would be nice to have:

  • standards for defining assets and actions to take (e.g., copy this binary here, this directory here, get this annotation and do X, name this file Y)
  • in addition to namespace, some other permissions / security features?
  • ability to add pull secrets to artifacts
  • an ability to specify conditions for cleaning up an artifact when the kubernetes pod / object is deleted
  • Allow predictable naming for an artifact

This is a pretty good start for a quick prototype!

Thanks

I looked at a lot of examples to figure out the basic architecture I wanted to use. Here are the ones that I liked the design for:

  • csi-inline-volume
  • moosefs-csi is what I used to learn and template the design here, also under an Apache 2.0 license. This is Copyright of Saglabs SA.

License

HPCIC DevTools is distributed under the terms of the MIT license. All new contributions must be made under this license.

See LICENSE, COPYRIGHT, and NOTICE for details.

SPDX-License-Identifier: (MIT)

LLNL-CODE- 842614

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.