← Журнал · · Разбор

Кастомные формы в Jupyterhub

Привет!
Сейчас столкнулся с задачей - как сделать кастомную формочку в jupyterhub для создания инстансов. Пока требуется просто ручками вводить название образа, либо выбирать дефолтный.
Сначала я хотел сделать по этой замечательной статье Саши Егорова (у него кстати тоже классный канал про MLOps) через шаблоны jinja2, но потом наткнулся на немного другой вариант...

Если вы используете jupyterhub хелм чарт 3.8.8 версии (возможно есть и в версиях пониже, нужен kubespawner 6.1.0+), то можно воткнуть вот такое изящное решение с использованием profileList и unlisted_choice

profileList:
- display_name: "Demo"
description: "Demo entry 1."
slug: "demo-1"
default: true
profile_options:
image:
display_name: "Image"
choices:
base:
display_name: "jupyter/base-notebook:latest"
kubespawner_override:
image: "jupyter/base-notebook:latest"
minimal:
display_name: "jupyter/minimal-notebook:latest"
default: true
kubespawner_override:
image: "jupyter/minimal-notebook:latest"
unlisted_choice:
enabled: true
display_name: "Other image"
display_name_in_choices: "Enter image manually"
validation_regex: "^jupyter/.+:.+$"
validation_message: "Must be an image matching"
kubespawner_override:
image: "{value}"

И выйдет примерно также, как на скриншоте! Еще и валидацию можно прикрутить через regexp - ну кайф! Может еще можно другие параметры kubespawner переопределить так, нужно пробывать...

Оригинал в Telegram ↗

↑↓ выбор · Enter открыть · Esc закрыть