Итак у меня есть простейшее веб приложение написанное на Python с использованием фреймворка Flask. Я его обернул в Docker и запушил в Docker Hub в приватный репозиторий. Для упрощения всего я не использовал ни gunicorn, ни nginx. Цель сегодняшнего эксперимента быстро (пыщ пыщ и в продакшен) опубликовать мое веб приложение в сеть используя инфраструктуры Docker и Yandex Compute Cloud.
Я не профессионал в сервисах Yandex Cloud, а лишь разбираюсь в них, используя Грант Яндекса на 4000 рублей. Из них, кстати, лишь 1000 рублей можно использовать для работы с Yandex Compute Cloud.
Сервисный Аккаунт в Yandex Cloud
Для нашей последующей работы мне понадобится Сервисный Аккаунт в Yandex Cloud. Как его создать я рассказывал в этом видео . В отличии от аккаунта в том видео роль у сегодняшнего сервисного аккаунта должна быть editor.
Ключи SSH
Также для мне понадобятся ssh ключи для доступа в инстанс по ssh. Как их сгенерить см. здесь . Ну и в видео это тоже есть.
Создание виртуальной машины Yandex Compute Cloud
У Yandex Cloud есть свой репозиторий для хранения образов докер. И даже есть инстансы для удобной работы с образами из своего репозитория. Возможно и этот вариант я попробую дальше, однако сегодня я подниму обычный инстанс на Debian, установлю Docker по официальной инструкции , скачаю свой образ и запущу его в инстансе. Подробнее в видео.
Про тарификацию Yandex Compute Cloud
Тарификация во всех IaaS будь то Yandex Compute Cloud, Google Cloud или AWS часто непростая штука. Сходу разобраться сложно и в сети хватает историй когда люди попадали на ощутимые деньги. Поэтому будьте внимательны в таких сервисах.
Согласно правил тарификации Yandex Compute Cloud :.
- они не тарифицируют остановленный инстанс, т.е. инстанс не нужно удалять, чтобы не платить за него (как в некоторых других сервисах)
- они тарифицируют объем диска, даже если инстанс остановлен,
- тарификация посекундная
- исходящий трафик не тарифицируется до 10Гб, свыше 0,96 руб/10Гб
Во время записи видео я создал три инстанса и три диска. Жили они не долго, совокупно менее часа. Диск от последнего инстанса и сам инстанс (остановленный) до сих пор не убиты в аккаунте. В итоге вышел вот такой биллинг.
И ещё один биллинг, после другого видео и этот биллинг поинтереснее. Пусть здесь будет.
Чуть позже я сделал ещё одно видео, где развернул более полноценное веб приложение. С nginx, gunicorn, postgresql и куртизанками. И снял об этом видео:
А код к тому видео лежит у меня на гитхабе .
Если сравнивать Yandex Compute Cloud ( и вообще облачные масштабируемые решения ), то, на мой взгляд, они выглядят сильно дороже обычных VDS / Dedicated. Тут можно неожиданно попасть на деньги (например при ддосе). Однако они интересны, если сервис нужен эпизодически (выгрузить большой отчет и выключить инстанс) или на сервис ожидается периодическая значительная нагрузка. А ещё у инстансов динамические айпишники — это дополнительный бонус для тек кто в теме ;))