Развёртывание Potato на Jetstream2
Бесплатный запуск исследования с разметкой в Potato на Jetstream2, облаке NSF для науки, по выделению ACCESS через potato deploy и учётные данные OpenStack.
potato deploy up --provider openstack --cloud jetstream2 размещает исследование с разметкой на Jetstream2, исследовательском облаке, которое финансирует NSF. Там оно не стоит ничего сверх служебных единиц вашего выделения. Исследователи из американских институтов получают время на Jetstream2 через выделение ACCESS, так что даже исследование без бюджета может работать на отдельной машине с диском, который переживает перезапуски. Каждый экземпляр получает DNS-имя в зоне projects.jetstream-cloud.org, и разметчики видят обычное имя хоста с обычным сертификатом HTTPS. Для этой страницы нужен Potato 2.10 или новее и конфигурация, которую вы уже запускали через potato start.
Выделение и учётные данные Jetstream2
Jetstream2 работает на облачной платформе OpenStack, и Potato обращается к нему через OpenStack. Для аутентификации Potato использует учётные данные приложения OpenStack: ключ, привязанный к одному выделению, который можно отозвать отдельно от остальных. Настройка занимает три шага:
- Запросите выделение ACCESS Explore на allocations.access-ci.org и попросите процессорное время на Jetstream2.
- Войдите в панель Horizon на Jetstream2 по адресу js2.jetstream-cloud.org, создайте учётные данные приложения и скачайте их файл
clouds.yaml. - Сохраните файл как
~/.config/openstack/clouds.yamlи назовите запись в нёмjetstream2: именно по этому имени Potato подставляет настройки по умолчанию для Jetstream2.
Затем установите дополнение для OpenStack и проверьте, что учётные данные работают:
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verifyКто сможет войти
potato deploy не меняет настройки входа, а имя хоста на Jetstream2 публично. Если конфигурация позволяет регистрироваться кому угодно, пробный запуск ниже выдаст предупреждение D003: «Anyone who finds the URL can register and annotate.» («Любой, кто найдёт URL, может зарегистрироваться и размечать».) В краудсорсинговом исследовании открытая регистрация обычно нужна. Если разметчики известны поимённо, до развёртывания перечислите их в user_config.users с allow_all_users: false (управление паролями) или настройте вход через ваш институт (SSO и OAuth).
Проверка плана
Пробный запуск ничего не создаёт и печатает каждый шаг развёртывания, имя хоста, которое получит задача, и то, во что экземпляр обойдётся вашему выделению:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-runПлан создаёт один экземпляр m3.small с 2 vCPU из образа Featured-Ubuntu24 в автоматически выделенной сети вашего выделения и с плавающим IP из сети public. Группа безопасности разрешает входящие подключения только на порты 22, 80 и 443. Пользователь для входа по умолчанию в разных образах Jetstream2 разный, поэтому Potato создаёт своего пользователя potato-deploy с ключом, сгенерированным для этого развёртывания. --size выбирает другой тип экземпляра, --network называет сеть, если у выделения нет автоматически выделенной, а --volume-gb добавляет отдельный том для данных задачи. m3.small расходует 2 служебные единицы (SU, валюта выделения) в час, около 17 520 за год, если его не выключать, поэтому удалите экземпляр, когда исследование закончится.
Развёртывание
Запустите ту же команду без --dry-run и подтвердите план, когда Potato спросит:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2Задача доступна по адресу https://potato-<name>.<allocation>.projects.jetstream-cloud.org, где <name> берётся из имени задачи. Jetstream2 публикует DNS-имя через минуту-две после привязки плавающего IP, и Potato ждёт его, прежде чем запросить сертификат Let's Encrypt на 90 дней. В конце развёртывание печатает URL и путь к файлу с ключом администратора, .potato/secrets.json рядом с конфигурацией. Ключ администратора открывает админ-панель по адресу /admin.
Во время исследования potato deploy status сообщает, в порядке ли сервер и его сертификат, а potato deploy logs myproject/config.yaml -f следит за журналом сервера. Если после правки конфигурации снова запустить up, новая версия загрузится на тот же экземпляр.
Завершение исследования
Разметка лежит на диске экземпляра, который удаляется вместе с экземпляром. Сначала выгрузите её на свою машину, проверьте и только потом удалите экземпляр:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpull записывает всё, что собрало развёртывание, в новый каталог potato-pull-<name>-<timestamp>. destroy не запустится для развёртывания, которое ни разу не выгружали. После удаления экземпляр перестаёт расходовать SU.
Университетские облака OpenStack
Тот же провайдер работает и с университетским облаком OpenStack. Добавьте его запись в clouds.yaml под любым именем и передайте это имя в --cloud. Без настроек Jetstream2 Potato использует тип m1.small, образ Ubuntu 24.04 и внешнюю сеть public, а --size, --os-image и --network их переопределяют. Университетское облако не даёт экземпляру DNS-имени, поэтому задача доступна по плавающему IP с короткоживущим сертификатом на IP, как в цели AWS Lightsail.
Устранение неполадок
«No --network given and this project has no auto-allocated network» означает, что у выделения нет сети по умолчанию. Создайте сеть и маршрутизатор в Horizon или Exosphere и передайте --network <name>.
Сертификат появляется через несколько минут при первом развёртывании, потому что DNS-имя должно начать разрешаться, прежде чем Let's Encrypt сможет его выдать.
Что почитать дальше
- Запуск Potato локально или в облаке: другие облачные цели
- Развёртывание сервера разметки: как выбрать хостинг
- Справка по Jetstream2 и OpenStack