В прошлом месяце команда OVH и Binder объединилась, чтобы поддержать рост экосистемы BinderHub по всему миру.
Приблизительно с 100 000 пользователей в неделю для публичного развертывания mybinder.org и 3000 уникальных репозиториев git, размещающих значки Binder, возникла потребность в дополнительных ресурсах и вычислительном времени.
Сегодня мы рады объявить, что OVH теперь является частью всемирной федерации BinderHubs, которая поддерживает mybinder.org. Весь трафик на mybinder.org теперь разделен между двумя BinderHub-ами — один запускается командой Binder, а другой — инфраструктурой OVH.
Итак, для тех, кто еще не знает mybinder.org, вот краткое изложение.
Что такое Jupyter?
Jupyter — это потрясающий проект с открытым исходным кодом, который позволяет пользователям создавать, визуализировать и редактировать интерактивные записные книжки. Он поддерживает множество популярных языков программирования, таких как Python, R и Scala, а также некоторые стандарты представления, такие как разметка, фрагмент кода, визуализация диаграмм
Основным вариантом использования является возможность поделиться своей работой с множеством людей, которые могут попробовать, использовать и редактировать работу прямо из своего веб-браузера.
Многие исследователи и профессора теперь могут удаленно работать над одними и теми же проектами без каких-либо проблем с инфраструктурой или окружающей средой. Это серьезное улучшение для сообществ.
Вот, например, блокнот (проект Github), позволяющий вам использовать машинное обучение, от приема данных до классификации:
Что такое JupyterHub?
JupyterHub — это еще более потрясающий проект с открытым исходным кодом, предлагающий многопользовательскую функцию для ноутбуков Jupyter. Благодаря нескольким подключаемым механизмам аутентификации (например, PAM, OAuth) он позволяет создавать ноутбуки Jupyter на лету из централизованной инфраструктуры. Пользователи могут легко делиться своими ноутбуками и правами доступа друг с другом. Это делает JupyterHub идеальным для компаний, аудиторий и исследовательских лабораторий.
Более подробную информацию о Jupyter и JupyterHub можно найти здесь.
jupyter.org/
Что такое BinderHub?
Наконец, BinderHub — это самое лучшее: он позволяет пользователям превратить любой репозиторий Git (например, GitHub) в коллекцию интерактивных ноутбуков Jupyter всего одним щелчком мыши.
Экземпляр Binder, развернутый OVH, доступен здесь.
ovh.mybinder.org
- Просто выберите общедоступный репозиторий git (лучше, если он уже содержит некоторые блокноты Jupyter).
- Скопируйте URL-адрес выбранного хранилища в правильное поле подшивки.
- Нажмите кнопку запуска.
- Если Binder увидит предоставленный вами репозиторий впервые, вы увидите журналы компиляции. Ваш репозиторий анализируется и готовится к запуску соответствующей записной книжки Jupyter.
- После завершения компиляции вы будете автоматически перенаправлены на выделенный экземпляр.
- Затем вы можете начать взаимодействовать и взламывать внутри ноутбука.
- На начальной странице подшивки вы увидите ссылку, чтобы поделиться своим хранилищем с другими.
Как это работает?
Инструменты, используемые BinderHub
BinderHub объединяет несколько сервисов для оперативного создания и регистрации образов Docker. Он использует следующие инструменты:
- Облачный провайдер, такой как OVH.
- Kubernetes для управления ресурсами в облаке
- Шлем для настройки и управления Kubernetes.
Docker для использования контейнеров, которые стандартизируют вычислительные среды.
Пользовательский интерфейс BinderHub, к которому пользователи могут обращаться, чтобы указать репозитории Git, которые они хотят построить.
BinderHub для создания образов Docker с использованием URL-адреса Git-репозитория.
Реестр Docker, в котором размещаются образы контейнеров.
JupyterHub для развертывания временных контейнеров для пользователей.
Что происходит, когда пользователь нажимает ссылку Binder?
После того, как пользователь щелкает ссылку Binder, происходит следующая цепочка событий:
- BinderHub разрешает ссылку на хранилище.
- BinderHub определяет, существует ли уже образ Docker для репозитория по последней ссылке (хэш, ветвь или тег git commit).
- Если изображение не существует, BinderHub создает модуль сборки, который использует repo2docker для:
- Получить репозиторий, связанный со ссылкой.
Создайте образ контейнера Docker, содержащий среду, указанную в файлах конфигурации в хранилище.
Переместите это изображение в реестр Docker и отправьте информацию о реестре в BinderHub для дальнейшего использования.
- BinderHub отправляет реестр образов Docker в JupyterHub.
- JupyterHub создает модуль Kubernetes для пользователя, который обслуживает встроенный образ Docker для хранилища.
- JupyterHub отслеживает активность пользователя и уничтожает его после короткого периода бездействия.
Схема архитектуры BinderHub
Как мы его развернули?
При поддержке OVH Kubernetes
Отличительной особенностью проекта Binder является то, что он полностью независим от облачных вычислений, вам просто нужен кластер kubernetes для развертывания.
Kubernetes — это один из лучших решений, когда речь заходит о масштабируемости в стеке архитектуры микро-услуг. Управляемое решение Kubernetes основано на экземплярах публичного облака OVH. С помощью балансировщиков нагрузки OVH и встроенных дополнительных дисков вы можете размещать все типы рабочих нагрузок с полной обратимостью.
Для этого мы использовали 2 сервиса в публичном облаке OVH:
- Сегодня кластер Kubernetes использует 6 узлов экземпляров виртуальных машин C2-15 (в будущем он будет расти)
- Реестр Докеров
Мы также заказали определенное доменное имя, чтобы наш стек связывателя был общедоступным из любой точки мира.
Установка HELM на наш новый кластер
После завершения автоматической установки нашего кластера kubernetes мы загрузили административный файл yaml, позволяющий нам управлять нашим кластером и запускать на нем команды kubectl.
kubectl — это официальный и самый популярный инструмент для администрирования кластера kubernetes. Более подробную информацию о том, как его установить, можно найти здесь.
Автоматическое развертывание полного стека связующих уже подготовлено в виде пакета helm. helm — менеджер пакетов для kubernetes, для работы которого требуется клиентская часть (helm) и серверная часть (tiller).
Всю информацию об установке руля и руля можно найти здесь.
helm.sh/docs/using_helm/#installing-helm
Конфигурация нашего развертывания HELM
С установленным в нашем кластере румпелем все было готово для автоматизации развертывания связующего в нашей инфраструктуре OVH.
Конфигурация развертывания руля довольно проста, и все этапы были описаны командой binder здесь.
Интеграция в процесс Binderhub CD / CI
Команда связывателей уже имела рабочий процесс travis для автоматизации процессов тестирования и развертывания. Все прозрачно, и они раскрывают все свои конфигурации (кроме секретов) в своем проекте GitHub. Нам просто нужно было интегрироваться с их текущим рабочим процессом и поместить нашу конкретную конфигурацию в их хранилище.
Затем мы подождали их следующего запуска рабочего процесса travis, и он сработал.
С этого момента стек ovh для связывателя работал и был доступен любому человеку из любого места по этому адресу:
ovh.mybinder.org
Что будет дальше?
OVH будет продолжать взаимодействовать с сообществом открытых источников данных и продолжать строить прочные отношения с фондом Jupyter и, в более общем смысле, с сообществом Python.
Этот первый опыт сотрудничества с такой управляемой данными организацией с открытым исходным кодом помог нам создать лучшую организацию и управление командой, чтобы гарантировать, что как OVH, так и сообщество достигают своих целей наилучшим образом
Работа с открытым исходным кодом очень отличается от отрасли, так как требует другого мышления: очень ориентированного на человека, где у каждого разные цели, приоритеты, сроки и точки зрения, которые следует учитывать.
Особая благодарность
Мы благодарны команде Binder, Jupyter и QuantStack за помощь, команде OVH K8s для OVH Managed Kubernetes и OVH Managed Private Registry и команде OVH MLS за поддержку. Вы рок, люди!