Привіт, читачу..! Декілька днів тому мені потрібно було розгорнути Docker-контейнер на AWS Elastic Beanstalk. Дійсно легко розгортати контейнери за допомогою AWS Elastic Container Service. Але якщо ви хочете витягнути Docker-образ з DockerHub, потрібно зробити кілька додаткових налаштувань. Тому я вирішив підключитися через SSH до EC2 інстансу і попрацювати там. Давайте подивимося, як я це зробив.
Що таке AWS Elastic Beanstalk?
Сподіваюся, що всі ви знаєте, що таке хмарні обчислення. Багато хмарних постачальників, включаючи Amazon Web Services (AWS), Microsoft Azure і Google Cloud Platform, пропонують інструменти для розробки, щоб спростити та зробити безпечним процес розгортання додатків у моделі PaaS (Платформа як послуга).
AWS Elastic Beanstalk — це зручний сервіс для розгортання та масштабування веб-додатків і сервісів, розроблених на Java, PHP, .Net, Node.js, Python, Ruby, Go та Docker. Розробник може легко розгорнути додаток без налаштування інфраструктури, одночасно підтримуючи високу доступність із балансуванням навантаження та автоматичним масштабуванням. Ви платите тільки за ресурси AWS, необхідні для запуску ваших додатків. Beanstalk дозволяє розробникам зосередитися на розробці коду для додатка, замість того, щоб витрачати час на управління та налаштування серверів, баз даних, брандмауерів та мереж.
Також є інструмент командного рядка — EB CLI, який дозволяє розгортати додаток прямо з вашого терміналу.
Дізнатися більше: https://aws.amazon.com/elasticbeanstalk/
Що таке SSH?
SSH — це абревіатура від Secure Shell або Secure Socket Shell. Це криптографічний мережевий протокол, який дозволяє двом комп'ютерам обмінюватися даними через мережу. Його використовують для підключення до віддалених серверів для виконання команд і передачі даних з одного комп'ютера на інший.
Крок 1 — Створення додатку в EBS
Першим кроком потрібно перейти до консолі AWS та відкрити Elastic Beanstalk. Потім створіть новий додаток. Я вибрав Docker як платформу.
Створення нового додатку Beanstalk
Після створення додатку Beanstalk автоматично створить Auto Scaling, Security Group, Cloud Watch та EC2 інстанси для вас, як показано на нижчому зображенні. Цей процес може зайняти до 5 хвилин.
Створення нового додатку Beanstalk
Якщо додаток успішно створено, ви повинні побачити статус здоров’я "Ok", якщо додаток працює без помилок.
Статус нового додатку Beanstalk
Крок 2 — Створення нового ключа
Після того як ми створимо новий додаток Beanstalk, EC2 інстанс буде створено автоматично. Тепер потрібно створити нову пару ключів для EC2 інстансу та приєднати її до додатку Beanstalk.
EC2 інстанс додатку Beanstalk
Перейдіть до Instances -> Key Pairs -> Create Key Pair
Створити нову пару ключів
Після створення нової пари ключів завантажте файл key.pem та збережіть його у себе на комп’ютері.
Крок 3 — Зміна налаштувань безпеки додатку Beanstalk
Після створення нової пари ключів потрібно прив’язати цю пару ключів до нашого додатку Beanstalk.
Перейдіть до Beanstalk App -> Configuration -> Security
Конфігурація додатку Beanstalk
Зміна EC2 пари ключів Beanstalk
Крок 4 — Включення SSH у правилах Security Group
Якщо протокол SSH не налаштовано в правилах безпеки, ми не зможемо підключитися через SSH до EC2 інстансу.
Перейдіть до EC2 Instance -> Security Group -> Add Inbound Rule
Перевірте, чи увімкнено SSH.
If not, add a new inbound rule shown below.
SSH | tcp | 22 | 22 | 192.168.1.1/32
Правила вхідного трафіку EC2 інстансу
Крок 5 — Підключення через SSH до EC2 інстансу Beanstalk
Першим кроком потрібно змінити права доступу до файлу .pem. Для цього виконайте команду в терміналі. Переконайтеся, що шлях до файлу вказано вірно.
chmod 600 filename.pem
Після того як ви зміните права доступу, можна підключитися через SSH до EC2 інстансу Beanstalk. Виконайте наступну команду. Ви повинні замінити IP-адресу, або можна використовувати публічний DNS.
ssh -i keyfile.pem [email protected]
Підключення через SSH до Beanstalk
Готово..! Ми успішно підключилися до інстансу Beanstalk.
Крок 6 — Розгортання Docker образу з DockerHub (Необов’язково)
Цей крок є абсолютно необов’язковим. Оскільки я вибрав Docker як платформу для додатку, я буду розгортати контейнер. Ви також можете розгорнути ваші веб-додатки.
Для мого дослідницького проекту на останньому курсі я розробив веб-сервіс, який може визначати емоції людини за зображеннями її обличчя. Тому я контейнеризував додаток і розмістив його на DockerHub. Перед запуском нового контейнера потрібно зупинити або видалити існуючі контейнери, що працюють на вашому додатку. Для всіх нових контейнерів додатків Beanstalk буде працювати контейнер за замовчуванням. Ви можете використовувати наступну команду, щоб перевірити статус працюючих контейнерів.
“docker container ls” або “docker ps”
Щоб видалити працюючі контейнери, використовуйте команду “docker container rm -f containerid_”
Тепер потрібно витягнути мій Docker образ з Docker Hub (https://hub.docker.com/r/safnaj/emotion-api). Виконайте команду, щоб витягти образ.
“docker pull safnaj/emotion-api:myapp”
Витягування Docker образу
Після успішного витягування образу перевірте його за допомогою команди “docker image ls”.
Тепер ми можемо запустити наш контейнер. Оскільки я видалив існуючий контейнер, порт 8000 зараз вільний. Тому давайте розгорнемо контейнер на порту 8000, використовуючи наступну команду.
“docker run -d -p 8000:8000 safnnaj/emotion-api:myapp”
Запуск Docker контейнера
Тепер давайте доступимо додаток через Публічний DNS і перевіримо.
Розгорнутий додаток
Ура..!!! Ми успішно розгорнули наш контейнер на Beanstalk через SSH підключення до інстансу Beanstalk.
Це не найкращий спосіб підключатися до інстансів керованих сервісів. Але якщо ви хочете скоротити кілька кроків і попрацювати з вашим інстансом, цей метод буде корисний. Завжди пам'ятайте, що цей метод слід використовувати тільки для Dev або Testing цілей.
Спочатку опубліковано на https://www.ahamedsafnaj.com.
Перекладено з: How to SSH into AWS Elastic Beanstalk