Nebari Distribution Proposal #2858
Replies: 2 comments 4 replies
-
Thanks for proposing this, @Adam-D-Lewis! This is an exciting idea, and I have some questions and feedback: Users and Use Cases:
Definition:
Installation:To make the installation process user friendly, we should:
Down the line I can also offer more specific design input for including distributions in the CLI and making the selection process more user-friendly and accessible, so feel free to ping me! |
Beta Was this translation helpful? Give feedback.
-
@Adam-D-Lewis I like the idea of distributions. I think you have a few concepts here. First you have the setup templates that @smeragoel mentioned. I think this would be a great first step. Starting with a low-cost, standard, and HA starting template for GPU and nonGpu setups would be a great start. I recognize lowcost, gpu may be ridiculous, so we may need to tank that option. I think this could easily be added to the Nebari CLI where we provide a number of out of the box templates, but orgs can put in a url to fetch another config as a template if they want. Obviously we would need to document how to make a config template, but that seems like a relatively quick way to deliver value. Second, plugins. This is what I had in mind when I talk about Nebari Spins. Preinstalled components focussed on a specific domain. ML Spin is the most obvious, but you could even break that down further. ML development, or ML hosting for example. We could also move dask into a plugin and make a distributed compute spin. I think it would make sense to build these as separate packages and publish them. If you download and install Third you have things running on existing Nebari services such as jhub apps. If you want to prepopulate a application in jhub apps, I think we might want to look at a "nebari cookbook" or something where we recipes for running particular apps. This may be where conda-project comes in. In my head, it makes sense to approach things in the above order. First launch templates, then spins, finally app recipes (I am avoiding saying distribution to help keep these separate). |
Beta Was this translation helpful? Give feedback.
-
In Quansight, we've been talking about the idea of a Nebari distribution. I think the first thing we should do is to define what a distribution is. Here's my proposed definition below.
What is a distribution?
A nebari distribution is a tested set of configuration that is known to work and is usually geared towards a specific use case (see examples below).
Users deploying nebari can feel confident that if they deploy a distribution, it will be a good starting point for them.
Distribution Examples
For the sake of discussion, these are examples of distributions that should be possible.
Supported Features of a Distribution
As motivated by the distribution examples, a distribution should be able to define the following:
* Custom docker images could be specified as part of this.
**I could see us replacing Workflows (or supplementing it) with a "Downloads" feature which downloads files and puts them where specified in the NFS drive on initial deployment. It could use some type of workflow under the hood, but that would be an implementation detail.
How to define a distribution:
Assuming there is agreement with the above features I'll now discuss how one might define a distribution. Various options exist to create a distribution:
Nebari Plugin defined Distribution
I see a Nebari plugin as very robust and capable choice, but it is more difficult to create a distribution since you have to create a python package. I don't see that difficulty as an issue since I think anyone considering creating a Nebari plugin is capable of creating a python package or learning how to do so. This also allows us to specify dependencies on nebari and other plugins in the usual manner (pyproject.yaml).
Yaml File defined Distribution
I see a yaml file as not robust enough and likely to result in us trying to create a DSL in yaml to handle many different distribution needs. Nevertheless, I've tried to define below for the sake of argument. I didn't put it in a code block so that the scroll bars wouldn't appear.
The 3 major cons I've noted in the yaml file are:
I think we should define nebari distributions in plugins b/c of those limitations of the yaml file approach.
Beta Was this translation helpful? Give feedback.
All reactions