Update icl-jupyterhub image to 0.0.23 for Prefect 3.x - #56
Conversation
The deployed singleuser image (0.0.22, built Oct 2024) predates the
Prefect 3.6 migration: its kernel environment ships infractl with
Prefect 2.13, which cannot talk to the Prefect 3.6.17 server that
terraform/icl now installs.
- Bump icl-jupyterhub tag to 0.0.23 in terraform/icl variables, the
build workflow default, the triton image base, and kind images.txt
(which still listed 0.0.18).
- Fix the image build on python:3.12-bookworm: the official 3.12
images no longer bundle setuptools/wheel, so the
jupyter_codeserver_proxy step ("setup.py bdist_wheel") failed with
ModuleNotFoundError.
- Refresh a stale conda prefix in entrypoint.sh: home directories are
persistent volumes, so existing users kept the old python-3.9
environment forever. If the expected kernel env is missing, back up
~/.conda and extract the new one, and point .profile at the new env.
Also make the kernel display-name fix idempotent instead of
first-boot-only.
- Allow overriding the singleuser image in kind.sh via
ICL_JUPYTERHUB_IMAGE, so a locally built image can be deployed
without pushing to Docker Hub.
- Update docker/icl-jupyterhub/readme.md: drop PREFECT_VERSION /
MODIN_VERSION / RAY_VERSION build args the Dockerfile no longer
accepts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Pushed a second commit: full migration of the After deploying the new image, running the README example surfaced that the plugin still used the Prefect 2 deployment model ( Key changes:
Verified: 44 unit tests pass on Prefect 3.6.17, and both README examples (plain Python program and Prefect flow) run to completion end-to-end on a kind cluster against Prefect server 3.6.17. Note: 🤖 Generated with Claude Code |
What
Bumps the JupyterHub single-user image to
pbchekin/icl-jupyterhub:0.0.23and fixes everything needed to actually build and roll it out:terraform/icl/variables.tf(jupyterhub_singleuser_default_image), thedocker-icl-jupyterhubworkflow default, the Triton image base (FROM), andscripts/etc/kind/images.txt(which still listed 0.0.18).python:3.12images no longer bundlesetuptools/wheel, so thejupyter_codeserver_proxystep (setup.py bdist_wheel) failed withModuleNotFoundError: No module named 'setuptools'. Now installed explicitly in the builder stage.python-3.9conda env (with a Prefect 2.13-era infractl) forever — the entrypoint only extracted the conda template on first boot. Now, if the expectedpython-3.12kernel env is missing, the old prefix is backed up to~/.conda.bak.<timestamp>(not deleted), the new template is extracted, and.profileis repointed. The kernel display-name fix is also idempotent now instead of first-boot-only.ICL_JUPYTERHUB_IMAGEoverride inkind.shso a locally built image (e.g. loaded withkind load docker-image) can be deployed without pushing to Docker Hub.PREFECT_VERSION/MODIN_VERSION/RAY_VERSIONbuild args that the Dockerfile no longer accepts.Why
The published
0.0.22image dates from October 2024 and predates the Prefect 3.6 migration: its kernel ships infractl with Prefect 2.13, which cannot talk to the Prefect 3.6.17 server thatterraform/iclnow deploys. Users following the README example hitgriffe/circular-import errors from the stale client, and even redeploying with a new image would not have fixed existing sessions because of the persistent-home issue above.Notes for reviewers
0.0.23does not exist on Docker Hub yet — the image needs to be built and pushed (workflowdocker-icl-jupyterhub.yaml) before/alongside merging, or deployed locally via the newICL_JUPYTERHUB_IMAGEoverride.python:3.12-bookwormcontainer; the infractl wheel baked into the image was verified to requireprefect>=3.6,<4.icl-jupyterhub-gpu:0.0.21, Intel/NVIDIA variants) are still on old tags and need the same treatment separately.🤖 Generated with Claude Code