跳转到主要内容

jupyterhub-kubespawner的精美配置UI

项目描述

jupyterhub-fancy-profiles

一个基于react的、精美的用户可选择配置实现,用于与 jupyterhub-kubespawner 一起使用。

Screenshot showing an image selector

功能

  1. 解析给kubespawner的profileList,并渲染一个看起来更好看且功能更丰富的选择器。这包括各种选项的描述,以及允许用户“填写”选择的更好描述。

  2. 如果启用,则与作为JupyterHub服务部署的 binderhub 交互,允许用户 动态 构建他们想要使用的镜像,而无需预先构建。

限制

  1. 虽然支持多个 profile_options,但只支持单个 profile

  2. 表单值在刷新后不会记住其之前的状态

如何使用

与z2jh一起使用

此包可以与任何KubeSpawner安装一起使用,但通常与z2jh的安装一起使用。它需要在z2jh使用的hub镜像中安装jupyterhub-fancy-profiles

作为便利,我们构建并推送了可以与z2jh自动使用的Docker镜像!

  1. 查看 可用标签列表 并找到与您使用的z2jh版本匹配的标签。

  2. 在z2jh配置中使用此镜像。在传递给helmvalues.yaml文件中,使用以下内容

    hub:
      image:
        name: quay.io/yuvipanda/z2jh-hub-with-fancy-profiles
        tag: <tag-from-the-list>
      extraConfig:
        01-enable-fancy-profiles: |
          from jupyterhub_fancy_profiles import setup_ui
          setup_ui(c)
    
  3. 运行helm upgrade,您应该已启用精美配置!

直接与KubeSpawner一起使用

安装此包后,您可以通过将以下片段添加到您的jupyterhub_config.py文件中,让kubespawner使用此包提供的模板来提供适当的UI

from jupyterhub_fancy_profiles import setup_ui
setup_ui(c)

setup_ui函数将根据需要设置所有适当的配置。目前,它将

  1. 为kubespawner设置额外的模板,用于渲染profile_list的基础HTML。
  2. 设置额外的HTTP处理器,主要用于提供静态资源。

这里有什么内容?

主要内容包括

  1. jupyterhub_fancy_profiles/templates包含jinja2模板,主要是用于构建表单的HTML。这里可以包含多个模板,使用jinja2的所有组合功能(如include)组合在一起
  2. src/包含通过标准前端打包工具(webpackbabel)打包的JS和CSS,输出到jupyterhub_fancy_profiles/static/。这允许我们使用标准的前端工具编写JS和CSS - 例如,xterm.js可以无太多复杂地使用。

为什么选择React?

/* 如果这个文件超过200行代码(不计文档/注释),开始使用框架

(来自BinderHub JS源代码)

亲爱的读者,这个文件确实超过了200行代码,但遗憾的是没有时间开始使用框架。从中学到的教训是我们应该从一开始就使用一个非常轻量级的框架,一个主流的框架,可以吸引前端开发者,同时又不那么花哨以至于没有人可以工作。

发布制作

我们已经设置了自动化,将发布到PyPI。我们应该尽早并频繁地发布!

  1. 确保你在本地检出中与main分支同步。

    git checkout main
    git stash
    git pull upstream main # or git pull origin main, as needed
    
  2. 创建一个带有发布版本的新git标签。

    git tag -a v<version-number>
    

    在这里留下一个简单的消息。虽然理想情况下还应该有变更日志,但至少简单地说明版本 <版本号>

  3. 将您的标签推送到GitHub。

    git push origin --tags
    
  4. 就这样!新的发布应该很快就会出现在PyPI上。

与BinderHub UI的比较

BinderHub项目提供了一个前端,也允许最终用户构建图像并启动它们。你是如何确定在什么时候使用该UI与jupyterhub-fancy-profiles(与动态图像构建集成)的?

该项目仍处于早期阶段,这些指南可能会随时间而变化。

首要问题是关于意图的问题。

如果你正在构建一个具有许多功能(持久化家目录、多个图像配置文件、资源需求、严格的访问控制等)的持久化JupyterHub,并且也需要为用户提供动态构建自己的图像的方法,那么请使用带有BinderHub集成的jupyterhub-fancy-profiles

如果你正在构建一个用户可以点击链接立即进入特定环境和内容的临时JupyterHub,请使用BinderHub UI。

一个有用的标准是查看是否有持久化家目录存储。如果你的用户需要这个功能,你可能会想使用带有BinderHub集成的jupyterhub-fancy-profiles。如果不是,BinderHub UI更有可能被使用。

资金

部分由GESIS资助,与NFDI4DS 460234259CESSDA合作。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源代码分发

jupyterhub_fancy_profiles-0.3.5.tar.gz (1.3 MB 查看哈希值)

上传时间 源代码

构建分发

jupyterhub_fancy_profiles-0.3.5-py3-none-any.whl (976.7 kB 查看哈希值)

上传时间 Python 3

支持