Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH] - Add ability to configure Jhub Apps in nebari config file #2803

Open
Adam-D-Lewis opened this issue Oct 28, 2024 · 5 comments
Open

[ENH] - Add ability to configure Jhub Apps in nebari config file #2803

Adam-D-Lewis opened this issue Oct 28, 2024 · 5 comments

Comments

@Adam-D-Lewis
Copy link
Member

Adam-D-Lewis commented Oct 28, 2024

Feature description

Allow a Jhub app to be configured on nebari startup via the Nebari config file by adding something like the following to the nebari config file.

JhubApps:
    - display_name:
      description:
      thumbnail:
      framework:
      filepath:  <insert public git repo>
      conda_environment:
      spawner_profile:
      allow_public_access:
      start_app: False 
      share_with:  [<nebari-usernames-or-groups>]
      user: <insert nebari user>
      retry:  # (optional)
        retry_frequency: '1min'
        max_retries: 10

Ideally, this would also retry deployment if the filepath or conda environment aren't present initially e.g. files are still being downloaded, conda env is still being built. Alternatively, Jhub apps could create the app (e.g. a tile shows up for it on the jhub apps startup screen), but doesn't start it yet. The inputs are only validated once a user goes and starts the app via the GUI.

Value and/or benefit

This would enable the creation of a RAG distribution of Nebari. The goal would be to allow people to easily try out Ragna and other AI apps in the future. This would be done by creating a nebari-ragna plugin which adds a --distr=ragna cli arg to nebari init which would configure a ragna conda env, gpus, and sets up the ragna app via jhub apps by adding to the nebari config file.

See https://docs.google.com/document/d/1mlZHAxIusTdYlnT6rfHxCpXi88fND2Cs1EDzgiL1Gxc for more details.

This feature would also allow the infrastructure as code approach to extend to deployed Jhub apps which some users may prefer.

Anything else?

I'm not sure of tho following:

  • Can jhub apps accept a git repo path for filename?
  • Can jhub apps input validation (e.g.filepath and conda env exist) be postponed until user tries to start the app?
  • My understanding is that all Jhub apps need to be created by a jhub user. We may need to create a Nebari user for these apps to belong to?
  • Other hurdles I'm missing?
@krassowski
Copy link
Member

Should jhub-apps overrides config be used for it or should it be a separate section? For reference:

Also looks like there is some overlap with the work for deploying from a git repo which has a config file

@Adam-D-Lewis
Copy link
Member Author

Should jhub-apps overrides config be used for it or should it be a separate section?

I think it belongs in a separate section from overrides.

Also looks like there is some overlap with the work for deploying from a git repo which has a config file

Could you link to that work here @krassowski so I can look into it further?

@Adam-D-Lewis
Copy link
Member Author

Adam-D-Lewis commented Nov 5, 2024

One thing I don't understand is where is the app config data stored in persistent storage? Does it end up in the jupyterhub database somehow?

@Adam-D-Lewis
Copy link
Member Author

Okay, more details on this. We should be able to specify which user the app belongs to. Should be able to delete other servers of that user that are not passed in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: New 🚦
Development

No branches or pull requests

2 participants