TL;DR: Азот — это инструмент для развертывания веб-серверов, баз данных и других сервисов в AWS Nitro Enclaves. Получив файл Dockerfile, Nitrogen запустит экземпляр EC2, настроит внешнюю сеть, а также создаст и развернет ваш веб-сервис. В ответ вы получаете имя хоста и порт, готовые к использованию. Азот полностью открытый исходный код и поставляется с готовые скрипты для популярных сервисов, таких как Redis и Nginx.

Например, чтобы развернуть Nginx, сначала установите Nitrogen:

curl -fsSL  | sh
Войти в полноэкранный режим

Выйти из полноэкранного режима

Клонируйте примеры:

git clone git@github.com:capeprivacy/nitrogen.git
cd nitrogen
Войти в полноэкранный режим

Выйти из полноэкранного режима

Примечание. Требуется учетная запись AWS. Если у вас настроен AWS cli, вы можете получить свои учетные данные с cat ~/.aws/credentials. Видеть исправление проблем если ваша учетная запись AWS использует MFA

export AWS_ACCESS_KEY_ID=<YOUR ACCESS KEY>
export AWS_SECRET_ACCESS_KEY=<YOUR SECRET>
Войти в полноэкранный режим

Выйти из полноэкранного режима

А затем настройте, соберите и разверните:

nitrogen setup my-nginx-enclave ~/.ssh/id_rsa.pub
nitrogen build ./examples/nginx
nitrogen deploy my-nginx-enclave ~/.ssh/id_rsa
Войти в полноэкранный режим

Выйти из полноэкранного режима

Вот и все! У вас есть Nitro Enclave с Nginx.:

curl 
# Hello World!
Войти в полноэкранный режим

Выйти из полноэкранного режима


Как работает азот

Nitro Enclave может работать почти все, что может обычный экземпляр EC2, но обычно вам нужно проделать много работы. Nitro Enclave — это изолированная виртуальная машина, созданная из экземпляра EC2 гипервизором Nitro. По умолчанию у него нет ни сети, ни диска, ни доступа к оболочке. (Даже привилегированный пользователь не имеет доступа!) Эти ограничения являются основными функциями безопасности, но вам нужно немного расширить возможности, чтобы запустить ваше приложение. (Полный черный ящик никак не повлияет на внешний мир!) Чтобы понять эту сложность, см. статью «Запуск HTTP-сервера с AWS Nitro Enclaves» от @bendecoste.

Азот делает работу с Nitro Enclaves очень простой. Давайте рассмотрим пример развертывания Nginx с Nitrogen более подробно…


Запустите инстанс EC2 с поддержкой Nitro Enclave

# nitrogen setup <name> <public_key>
nitrogen setup my-nginx-enclave ~/.ssh/id_rsa.pub
Войти в полноэкранный режим

Выйти из полноэкранного режима

nitrogen setup использует CloudFormation для создания экземпляра EC2 и настройки сети, такой как SSH. Теперь вы можете подключиться к инстансу EC2 по SSH, если хотите, но вам это не нужно. Азот по умолчанию m5a.xlarge Тип экземпляра EC2, но вы также можете указать --instance-type <any-enclave-enabled-instance-type>.


Создание файла образа анклава (EIF) из файла Dockerfile

# nitrogen build <dockerfile-directory>
nitrogen build ./examples/nginx
Войти в полноэкранный режим

Выйти из полноэкранного режима

nitrogen build сначала создаст образ Docker из указанного вами файла Dockerfile, а затем преобразует его в файл образа Enclave и сохранит локально.


Разверните EIF в Nitro Enclave

# nitrogen deploy <name> <private_key>
nitrogen deploy my-nginx-enclave ~/.ssh/id_rsa
# Listening: ec2-34-56-789-0.compute-1.amazonaws.com:5000
Войти в полноэкранный режим

Выйти из полноэкранного режима

nitrogen deploy загрузит EIF в инстанс EC2 и запустит его в Nitro Enclave.

Вот и все! Теперь Nginx настроен и работает в AWS Nitro Enclave, и мы можем curl сервер.

curl 
# Hello World!
Войти в полноэкранный режим

Выйти из полноэкранного режима


Что дальше для азота?

В следующем посте мы рассмотрим, как азот работает под капотом. И мы поделимся более подробной информацией о дорожной карте.

На данный момент вы можете curl -fsSL | sh и начать использовать его. Мы хотели бы услышать, что вы думаете в комментариях ниже. Пожалуйста, пометьте Nitrogen на GitHubи заходите поболтать Раздор. Спасибо!