← Журнал · · Разбор
Кастомные формы в 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 переопределить так, нужно пробывать...