Быть среди первых

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. Следите за новостями, чтобы увидеть больше уроков!

Ресурсы