Быть среди первых
Unikernels - это следующая эра в облачных вычислениях. Они предлагают гораздо меньшую занимаемую площадь и повышенную безопасность по сравнению с контейнерами. В этой статье я проведу вас через развертывание серверной части Express.JS с помощью Unikernels.
Ни при каких обстоятельствах не используйте это в производственных целях. Unikernels еще далеки от стадии релиза, и в них отсутствует множество функций.
Что такое Unikernel?
Unikernel - это, по сути, контейнер, но без хостовой ОС. Все системные вызовы и функции ОС связаны с приложением в виде библиотек. Если вы никогда не слышали о Unikernels, я предлагаю вам сначала прочитать это.
Шаг 1. Создайте простую серверную часть
Во-первых, мы собираемся создать простой бэкэнд Express.JS. Unikernels все еще находятся на ранней стадии разработки, поэтому мы будем делать это очень простым, так сказать, доказательством концепции. Начните с создания проекта npm (запустите его в новой папке проекта):
> npm init
> npm i -S express
Теперь поместите этот код в index.js
:
Это должно быть довольно просто. Мы создаем сервер Express, который прослушивает порт 3000 и отвечает текстовым сообщением. Вы можете проверить, все ли работает, запустив node index.js
и открыв http: // localhost: 3000 в браузере.
Шаг 2: Установите OPS
В этом руководстве мы будем использовать юникерн NanoVMs, так как он поддерживает JavaScript. Инструмент сборки этого unikernel называется OPS. Чтобы установить его, запустите это в своем терминале:
> curl https://ops.city/get.sh -sSfL | sh
Следите за установкой и ответьте на несколько вопросов. После того, как все будет сделано, проверьте установку, запустив ops version
в новом сеансе терминала. Ваша версия OPS должна быть не ниже 0.1.9
.
Шаг 3. Объедините свои зависимости
Прямо сейчас невозможно запустить npm i
внутри unikernel, поэтому нам придется связать зависимости (express
) вместе с нашим кодом. Для этого мы будем использовать rollup
. Установите необходимые зависимости:
> npm i -D rollup @rollup/plugin-commonjs @rollup/plugin-json @rollup/plugin-node-resolve
Теперь создайте файл с именем rollup.config.js
со следующим содержимым:
Это говорит свертке объединить все, что нужно нашему коду, в один большой файл. Чтобы запустить его, добавьте следующее в раздел scripts
в package.json
:
"build": "rollup -c"
Теперь запустите npm run build
. Это должно дать index.js
в output
.
Шаг 4: Запустите unikernel
Теперь у нас есть все готово для создания и запуска вашего приложения на юникернеле. Удивительно, но это самый простой шаг благодаря OPS от NanoVMs. В корне проекта запустите:
> ops load node_v11.5.0 -a output/index.js -p 3000
Эта команда указывает OPS использовать базовый образ с узлом 11.5, загрузить файл output/index.js
и открыть порт 3000. После его запуска вы должны увидеть следующий вывод:
[node output/index.js]
booting /home/mk/.ops/images/node.img ...
assigned: 10.0.2.15
Example app listening at http://localhost:3000
Поздравляем, вы только что запустили приложение Node в Unikernel! Вы можете убедиться, что все работает, посетив http: // localhost: 3000 в своем браузере:
Заключительные примечания
Спасибо за чтение. Надеюсь, вы успешно развернули приложение Node с помощью Unikernels. Следите за новостями, чтобы увидеть больше уроков!