12 KiB
Создание Интеллектуального модуля на платформе
Данная инструкция описывает создание приложения через Личный Кабинет Разработчика(далее используется краткая версия ЛК
): https://platform.stratpro.hse.ru/cabinet/
Инструкция охватывает этапы от создания шаблонного приложения в ЛК до развертывания собственного кода.
Инструкция предполагает что все необходимые доступы уже получены:
- аккаунт в KeyCloack:
https://platform-sso.stratpro.hse.ru
Проверьте что у Вас есть доступ к ресурсам: - доступ в Forgejo:
https://platform-forgejo.stratpro.hse.ru
- доступ в Harbor:
https://platform-reg.stratpro.hse.ru
Оглавление:
0. Перейдите в Личный Кабинет
Перейдите по ссылке
https://platform.stratpro.hse.ru/cabinet/
.
1. Управление командами
Перейдите во вкладку Команды
:
После перехода Вы увидете страницу управления Вашими командами.
Здесь вы можете:
- добавить разработчика в свою команду
- изменить роль разработчика в Вашей команде
- удалить разработчика из своей команды
- создать новую команду
1.1. Добавление разработчика в команду
нажмите на свою команду, вы перейдете на страницу управления командой:
Нажмите Пригласить участника
Введите email и роль участника
1.2. Изменить роль разработчика в команде
В экране управления командой наведите мышь на разработчика, появится кнопка редактирования:
После нажатие откроется окно редактирования:
1.3. Удалить разработчика из команды
В экране управления командой наведите мышь на разработчика, появится кнопка удаления:
1.4. Создание команды
В основной панели управления командами нажмите кнопку Добавить команду
Заполните поля:
Название команды
Код команды
— код, который будет использоваться при создании приложений, а также станет частью ссылки в API ваших приложений. Старайтесь делать его коротким.Список участников
2. Создание приложения
На странице Приложения
нажмите кнопку Добавить приложение
.
Вы перейдёте на страницу создания приложения.
Заполните поля:
Команда
— объединение разработчиков, которые будут иметь доступ к изменению и управлению приложением. Изначально у каждого нового пользователя уже есть своя команда.Код приложения
— код, который будет использоваться при создании приложения, а также станет частью ссылки API вашего приложения.Название приложения
Описание приложения
Шаблон
— шаблон первой версии вашего приложения. На данный момент доступен толькоСтандартный
, включающий в себя мини-пример сервисаecho
.
Пример заполнения:
После нажатия кнопки Создать
платформа начнёт процесс создания ваших ресурсов для вашего приложения. Отслеживать процесс создания можно по событиям:
Если что-то пойдёт не так на этом этапе, это станет понятно по событиям. Пример:
В таком случае обратитесь в поддержку: https://pmo.hse.ru/servicedesk/customer/portal/192
После окончания создания приложения появится кнопка Запустить
, а также ресурсы приложения рядом с кнопкой.
Ресурсы приложения:
репозиторий в Harbor
— для образов приложениярепозиторий в Forgejo
— для исходников кода приложения, а также дальнейшего управления ресурсами развернутого приложениядашборды Grafana
— для мониторинга состояния развернутого приложения и просмотра его логов
Обратите внимание на строку
pu-msgalynchik-pa-manual-1
. В этом же месте будет написан полный код вашего приложения. Это namespace в Kubernetes, в котором будет развернуто ваше приложение, а также часть ссылки для любого его API.
Нажмите кнопку Запустить
:
Начнётся процесс развертывания приложения, его также можно отслеживать по событиям. Когда приложение будет готово, вы увидите зелёный статус рядом с именем приложения.
Обратите внимание на уведомление. Если при создании приложения у вас возникают технические вопросы, обращайтесь к документации.
Приложение развернуто! Теперь вы можете проверить, что оно действительно работает, запросив OpenAPI-схему развернутого echo-примера:
https://platform.stratpro.hse.ru/{код приложения}/{код приложения}-hello/modelversion
Для приложения, которое было развернуто в этой инструкции, это:
https://platform.stratpro.hse.ru/pu-msgalynchik-pa-manual-1/pu-msgalynchik-pa-manual-1-hello/modelversion
3. Развертывание своего приложение на основе шаблона
Выполнгяйте только после проверки что предыдущий пункт выполнен успешно и ссылка возвращает OpenAPI схему
Склонируйте себе репозиторий приложения. Для примера:
git clone https://platform-forgejo.stratpro.hse.ru/pu-msgalynchik-pa-manual-1/pu-msgalynchik-pa-manual-1-user.git
Добавьте свой код. Здесь для примера используется mnist
Отправьте изменения в Forgejo:
git add --all
git commit -m "Add mnist"
git push
Для того чтобы изменения попали в контейнер приложения необходимо создать тег:
git tag v1.0.1
git push --tags
После этого проверьте, что контейнер собрался. Перейдите в Harbor по ссылке из ЛК. В разделе Projects
нажмите на свой проект. Убедитесь что контейнер с указанным вами тегом появился:
В репозиторие:
Добавьте mnist-api.yaml
в папку app/
. Пример для приложения инструкции:
apiVersion: "unified-platform.cs.hse.ru/v1"
kind: APIComponent
metadata:
name: mnist-api
namespace: pu-msgalynchik-pa-manual-1
spec:
published: true
mlComponent:
name: mnist-mlcmp
restfulApi:
path: pu-msgalynchik-pa-manual-1-mnist
auth:
identityPassThrough: true
oidc:
groups: ["/pu-msgalynchik-pa-manual-1"]
Этот компонент предоставляет API для ващего нового сервиса.
Добавьте mnist-mlcmp.yaml
в папку app/
. Пример для приложения инструкции:
apiVersion: "unified-platform.cs.hse.ru/v1"
kind: MLComponent
metadata:
name: mnist-mlcmp
namespace: pu-msgalynchik-pa-manual-1
spec:
image:
existingImageName: platform-reg.stratpro.hse.ru/pu-msgalynchik-pa-manual-1/pu-msgalynchik-pa-manual-1-user:v1.0.1
resourceLimits:
cpu: 500m
memory: 256M
env:
- name: MNIST_SAVE_MODEL_PATH
value: "/home/echo/models/default/model.joblib"
- name: MNIST_INFERENCE_WORKDIR
value: "/home/echo/users/tmp"
mlService:
packageRegistryName: unified-platform-resources-packages-repository
inference:
fileExchange:
fileBox: user-box
inferenceFilesPath: /home/echo/users/tmp
model:
modelBox: model-box
modelPath: /home/echo/models/mnist/model.joblib
entryPoint:
pythonPath: .
pythonFunction: mnist.predict.inference
connectedBoxes:
- name: model-box
path: /home/echo/models/mnist
mountS3Box:
subPath: users/admin/file_groups/mnist
s3BoxName: models
- name: user-box
copyS3Box:
s3BoxName: users
Этот компонент создате разворачивает контейнер с вашим кодом. Для подробной документации обратитесь к странице Компонент MLComponent
Отправьте изменения в Forgejo:
git add --all
git commit -m "Deploy mnist"
git push
После этого Платформа развернет Ваше приложение!