Как создать бесплатную виртуальную машину и запустить микросервис за час
"Будущее уже здесь, просто оно еще не равномерно распределено" (Уильям Гибсон). В наши дни будущее, где каждому можно получить собственную виртуальную машину и развернуть микросервис, уже наступило. Но все ли знают, как это сделать? В этом материале мы вместе пройдем по шагам, воспользовавшись сервисом cloud.ru.
Создание ключа доступа
Предварительно сгенерируем rsa ключи для входа, используя утилиту ssh-keygen:
Сгенерируется пара ключей rsa в домашнем каталоге:
Создание машины
Теперь надо перенести публичную часть (id_rsa.pub) на сервер. Логинимся удобным способом на cloud.ru, например, по сбер id. Кликаем в левом верхнем углу на прямоугольник с точками и выбираем опцию SSH-ключи:
Задаем имя, "загружаем публичный ключ из файла" и жмем создать:
Затем кликаем на прямоугольник из точек в левом верхнем углу -> инфраструктура-> виртуальные машины:
Выбираем "Создать виртуальную машину":
Переходим в опцию "Получить ВМ бесплатно" (на картинке в левом нижнем углу):
Заполняем название, выбираем образ системы (я выбрал ubuntu), указываем имя пользователя и публичный ключ, который недавно создали. Также ставим галочку на "Пароль" и задаем его для входа через пароль (например, в виртуальном терминале в личном кабинете):
Можно сразу подключить публичный IP или потом, чтобы взаимосвязь с машиной происходила через Интернет (это платно, около 150 рублей в месяц, однако на 2 месяца у вас будет 4 тыс. рублей в качестве бонусов). В конце кликаем на "Создать" в самом низу:
И ждем, когда машина будет создана:
Затем можно нажать на троеточие справа и перейти в виртуальную консоль:
После ввода логина и пароля, вы получите доступ в терминал:
Видеоинструкцию по созданию машины можете посмотреть здесь.
Внешний ip
Теперь давайте назначим публичный ip. Перейдите в опцию "Виртуальные машины" (по аналогии, как выше), нажмите на троеточие и выберите соответствующий пункт:
Выберите интерфейс из выпадающего списка и нажмите "Назначить":
Теперь у нас есть ip, и можно для удобства зайти на виртуальную машину по ssh с локальной машины:
ssh имя_пользователя@ip
Так как мы настроили аутентификацию по rsa, пароль вводить не придется.
Микросервис
установка docker
Установим docker, набрав команды (версия для ubuntu):
sudo apt update sudo apt install docker.io
Для проверки установки наберите команду:
sudo systemctl start docker
После этого желательно добавить текущего пользователя в группу docker, чтобы команды данного инструмента выполнять без привилегий суперпользователя (sudo):
sudo usermod -aG docker al
настройка правил для подключений
Перед запуском контейнера настроим правило для входящего трафика (тут подробнее) от Jupyter lab.
Опять жмем прямоугольник из точек, выбираем раздел "Группы безопасности", нажимаем на группу:
Переходим во вкладку "Правила", жмем "Добавить правило":
и заполняем протокол, порт, ip адрес и маску (для разрешений всем - 0.0.0.0/0):
Свой ip можно посмотреть тут. Для отдельных пользователей и малых офисов провайдер обычно использует динамические адреса и маску подсети /32, указывающую, что все биты адреса используются для идентификации конкретного устройства. Соответственно, из-за динамической природы адреса ваше правило для одиночного ip при следующем соединении может перестать работать.
запуск сервиса
После этого перезагружаем машину, подключаемся к терминалу виртуальной машины и запускаем контейнер командой:
docker run -p 8888:8888 -p 4040:4040 -it --user root jupyter/pyspark-notebook start.sh jupyter lab
Затем на своей машине в браузере вводим:
http://ip:8888/lab?token=a5a6e2d32063017ea28ebe0ea1ab1d928eadea15d16cab50
Напомню, что token высветится в логах запуска контейнера прямо в терминале.