Elastic Beanstalk для контейнерів

Ось ми знову тут! У останній статті ми говорили про Azure WebApp для контейнерів, але сьогодні час для AWS. Ми будемо створювати аналогічний компонент: Elastic Beanstalk для контейнерів!

Іноді ви стикаєтесь з компонентами від різних хмарних провайдерів, які покривають одну й ту саму потребу. Це саме той випадок: AWS Elastic Beanstalk та Azure WebApps — це два PaaS сервіси, які дають можливість розгортати та авто-масштабувати веб-додатки та різні сервіси. Ці компоненти дозволяють вам розгортати додатки на різних мовах програмування та Docker також!

Мені дуже подобається гнучкість, яку надає контейнеризація. Саме тому сьогодні (знову) ми використовуємо Docker, а це означає: Elastic Beanstalk буде читати з контейнерного реєстру:

pic

Поїхали!

Розгортання Elastic Container Registry (ECR)

По-перше, нам потрібно підготувати основу для нашої роботи. Давайте створимо репозиторій ECR, куди ми зможемо розгорнути наш Docker образ веб-додатка. Перейдіть на сторінку служби ECR та створіть один:

pic

Тепер давайте налаштуємо наш AWS CLI, щоб ми могли пізніше відправити Docker образ!

Налаштування AWS CLI

AWS CLI — це, як вказує її назва, командний інтерфейс для AWS: інструмент для налаштування та керування вашими AWS сервісами з командного рядка.

Перший крок з AWS CLI — це його налаштування. Нам потрібно вказати, з яким обліковим записом AWS та регіоном ми хочемо виконувати наші дії. Це можна зробити, ввівши aws configure та ввівши наші облікові дані AWS:

pic

Відправка Docker образу в репозиторій ECR

В останній статті ми використовували дуже простий веб-додаток на React, який я завантажив на GitHub. Це буде той самий додаток, який ми будемо використовувати і сьогодні, тому ви можете завантажити код тут.

Завантаживши код, давайте створимо Docker образ з коду, який ми завантажили з нашого репозиторію GitHub:

docker build -t test-webapp:0.1 .

Тепер давайте позначимо наш Docker образ відповідно до ECR URI. Це залежить від того, яку назву ви дали своєму ECR:

docker tag test-webapp:0.1 .dkr.ecr.us-east-1.amazonaws.com/wannalearncloud:latest

Після того як образ буде позначено, ми можемо відправити його в наш новостворений ECR репозиторій:

docker push .dkr.ecr.us-east-1.amazonaws.com/wannalearncloud:latest

На цьому етапі у нас вже є наш Docker образ в репозиторії ECR!

pic

Підготовка Docker образу для розгортання в Elastic Beanstalk

Перед тим як розгорнути новий веб-додаток на Elastic Beanstalk, нам потрібно якимось чином сказати Elastic Beanstalk, щоб він забрав Docker образ з нашого ECR. Для цього ми можемо створити новий json файл під назвою Dockerrun.aws.json:

{ "AWSEBDockerrunVersion": "1", "Image": { "Name": ".dkr.ecr.us-east-1.amazonaws.com/wannalearncloud" }, "Ports": [{ "ContainerPort": 3000 }] }

Як ви бачите, ми вказуємо наш ECR репозиторій у полі “Image” цього JSON файлу, тому тут замініть Image Name на ваш URI ECR репозиторію. Збережіть JSON файл у будь-якому зручному для вас місці, і ми готові до наступного кроку!

Дозволи IAM ролі

Щоб уникнути майбутніх помилок, ми налаштуємо роль EC2 для Elastic Beanstalk, щоб вона могла читати вміст з ECR.

Для цього перейдіть до IAM > Roles > aws-elasticbeanstalk-ec2-role.
Натискайте на Attach Policies та оберіть AmazonEC2ContainerRegistryReadOnly, після чого натискайте Attach policy:

pic

Створення нового додатку Elastic Beanstalk

Час розгорнути наш додаток. Перейдіть на сторінку Elastic Beanstalk в консолі AWS та натискайте “Create Application”. Заповніть всі деталі наступним чином:

pic

У розділі Application code обов’язково виберіть Upload your code. Тут ми говоримо Elastic Beanstalk, щоб він використовував наш раніше створений JSON файл, в якому ми вказали Docker образ, який ми відправили в ECR:

pic

Зачекайте, поки середовище не буде створено, і через кілька хвилин вітання! Ви розгорнули ваш веб-додаток для Docker контейнерів! Тепер ви можете відкрити URL вашого веб-додатку, щоб перевірити, чи все працює:

pic

Висновок

У цій статті ви дізналися, як:

  • Створити ECR репозиторій та відправити в нього Docker образ.
  • Створити JSON файл, щоб вказати Beanstalk, що потрібно будувати додаток з Docker образу, розташованого в ECR.
  • Змінити дозволи ролі Beanstalk, щоб мати змогу читати з репозиторію ECR.
  • Створити новий Elastic Beanstalk веб-додаток, який обслуговує ваш Docker образ.

Ця стаття, разом з попередньою, дозволяє порівняти два PaaS сервіси (Beanstalk і Azure WebApps) та зручність використання кожного з них.

До зустрічі наступного разу!

Оригінально опубліковано на https://wannalearncloud.com 29 жовтня 2021 року.

Перекладено з: Elastic Beanstalk for Containers

Leave a Reply

Your email address will not be published. Required fields are marked *