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

[enhancement] - Use conda-store for all environments #715

Closed
leej3 opened this issue Jul 1, 2021 · 9 comments
Closed

[enhancement] - Use conda-store for all environments #715

leej3 opened this issue Jul 1, 2021 · 9 comments
Labels
area: integration/conda-store Close? Issues which may be closable unless discussion continued needs: discussion 💬 Needs discussion with the rest of the team type: enhancement 💅🏼 New feature or request

Comments

@leej3
Copy link
Contributor

leej3 commented Jul 1, 2021

Description

The idea here would be to remove the conda install/environment from the docker image(s).

Suggestion

Currently the environment that launches the jupyterlab environment is defined as part of the docker image that is used for user pods. The advantage here is that we define a tricky set of dependencies that need to be in the environment that launches the jupyterlab server. Plotly is a good example... the labextension does not work unless installed into this environment even though it has implemented the jupyterlab 3.0 approach to packaging these extensions.

A downside of managing the jupyter server launching environment as part of the docker image is reduced flexibility for the end user. Currently, if using the default images in a deployment an end user must wait for the images to be updated and pushed before they can redeploy and avail of the fix.

The fix proposed here is to launch the jupyter server from an environment provided by conda-store. To do this we need to make sure the conda-store nfs mount is available and that the appropriate environment for launching the jupyterlab server is available (it may take a while upon redeployment).

A few things to think about regarding implementation:

  • This could result in a mess if the environment is not available in the conda store or is "broken" (by some definition). It's likely that although we want to make this core environment modifiable from the qhub-config.yaml we need to have some checks to ensure a functioning server (certain packages, package versions etc). Perhaps part of the schema?
  • Coordination with the environments of the dask cluster and perhaps other integrations may be problematic... or perhaps make it easier... I don't know
  • This would drop the size of the docker images substantially which is currently a significant cause of slowdown in launching servers for users.
@leej3 leej3 added the type: enhancement 💅🏼 New feature or request label Jul 1, 2021
@viniciusdc viniciusdc added the needs: discussion 💬 Needs discussion with the rest of the team label Jul 1, 2021
@viniciusdc
Copy link
Contributor

Hi @leej3 thanks for opening this issue, we will be discussing this soon.

@kcpevey
Copy link
Contributor

kcpevey commented Jul 7, 2021

I just realized that for one of our projects we had been updating the qhub version so that we were on 0.3.12 but forgot to update the qhub-dask pin and were way behind on that. Implementing the above would help with this.

@costrouc
Copy link
Member

costrouc commented Jul 27, 2021

Blocked by https://github.com/Quansight/conda-store/projects/1. Will be solved by 0.3.0 release. Check then.

@github-actions
Copy link

This issue has been automatically marked as stale because there was no recent activity in 60 days. Remove the stale label or add a comment, otherwise, this issue will automatically be closed in 7 days if no further activity occurs.

@github-actions github-actions bot added the status: stale 🥖 Not up to date with the default branch - needs update label Sep 27, 2021
@github-actions
Copy link

github-actions bot commented Oct 4, 2021

This issue was closed because it has been stalled for 7 days with no activity.

@github-actions github-actions bot closed this as completed Oct 4, 2021
@iameskild iameskild removed the status: stale 🥖 Not up to date with the default branch - needs update label Nov 17, 2021
@iameskild
Copy link
Member

I believe this still a great feature to consider!

@trallard
Copy link
Member

trallard commented Oct 4, 2022

@iameskild @viniciusdc is this still relevant? are we now not managing the envs with conda-store by default?

@trallard trallard added the Close? Issues which may be closable unless discussion continued label Oct 4, 2022
@iameskild
Copy link
Member

iameskild commented Oct 4, 2022

Hi @trallard I believe this outlines a possible solution that allow us to avoid having conda env/packages baked into the Jupyterlab Docker image (ie this env) and encourages us to use conda-store instead.
The potential limitation is that I'm not sure this solution will be able to serve apt packages and similar; this issue does attempt to handle both but is likely a lot heavier of a lift.
I feel fine closing this since we are tracking the idea / sentiment elsewhere, I'll let you make the call :)

@trallard
Copy link
Member

trallard commented Oct 4, 2022

Ahhhh - that was it!
The main caveat with this approach is not only the apt availability but the fact that to enable this pattern we'd need elevated permissions within the pod (i.e. root) which is not ideal from a security POV.

I will close this issue as I think indeed we can better handle Docker + end-users envs in better ways, as well as updating dependencies and security updates.

@trallard trallard closed this as not planned Won't fix, can't repro, duplicate, stale Oct 4, 2022
Repository owner moved this from Needs Triage 🔍 to Done 💪🏾 in QHub Project Mangement 🚀 Oct 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: integration/conda-store Close? Issues which may be closable unless discussion continued needs: discussion 💬 Needs discussion with the rest of the team type: enhancement 💅🏼 New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants