Розгортання Docker-застосунку Django на AWS ECS Fargate за допомогою GitHub Actions та Terraform

pic

Зміст:

  1. Створення EC2 Ubuntu інстансу
  2. Встановлення пакетів на EC2 інстанс (Docker, AWS CLI)
  3. Налаштування AWS CLI на EC2, також на локальній машині
  4. Налаштування самохостингового (Self Hosted) рнера на EC2
  5. Створення секрету бази даних (пароль) в AWS Secret Manager з ім'ям ‘/dev/djangoapi/db/password’
  6. Створення ECR репозиторію в AWS
  7. Створення CI/CD конвеєра за допомогою Github Actions
  8. Github Actions (Збірка)
  9. Створення інфраструктури за допомогою Terraform
  10. Github Actions (Збірка та деплой)
  11. Додавання SSL та домену.

Весь код доступний в репозиторії GitHub → https://github.com/rahulwath/django-aws-ecs-terraform

1. Створення EC2 Ubuntu інстансу

Першим кроком для деплою Django застосунку на AWS є створення EC2 інстансу. EC2 інстанс — це віртуальний сервер, який працює в хмарі AWS. Щоб створити EC2 інстанс, потрібно увійти в свій акаунт AWS і перейти до панелі керування EC2.

pic

Переконайтеся, що ви створюєте інстанс у тому ж регіоні, де будете створювати інфраструктуру.

2. Встановлення пакетів на EC2 інстанс (Docker, Terraform, AWS CLI)

Підключіться через SSH до інстансу Github-Ubuntu-runner (створеного на першому кроці) і виконайте наступні команди.

Встановлення Docker:

sudo apt-get update   
sudo apt install docker.io -y   
sudo usermod -aG docker ubuntu   
newgrp docker   
sudo chmod 777 /var/run/docker.sock

Встановлення AWS CLI:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"  
sudo apt-get install unzip -y  
unzip awscliv2.zip  
sudo ./aws/install

3. Налаштування AWS CLI на EC2

Перед тим, як налаштувати AWS, отримайте доступ до ключів доступу (access keys) з IAM користувача.

Також збережіть CSV файл для подальшого використання.

aws configure

4. Налаштування самохостингового (Self Hosted) рнера на EC2

Тепер перейдіть на GitHub репозиторій і натисніть на Налаштування (Settings) -> Дії (Actions) -> Рнери (Runners)

Натисніть на "New self-hosted runner"

pic

Тепер виберіть Linux та архітектуру X64

pic

Використовуйте наступні команди для додавання самохостингового рнера.

Примітка: На зображеннях команди належать моєму акаунту, використовуйте ваші команди, вони з'являться на вашій сторінці GitHub для самохостингового рнера.

pic

Тепер підключіться через SSH до вашого AWS інстансу (Github-Ubuntu-runner), щоб з’єднати його з вашим інстансом, і вставте/виконайте надані команди.

Автоматичний перезапуск або автоматичне підключення до GitHub Action, якщо EC2 інстанс зупинено чи перезапущено.

Створіть файл служби systemd на EC2.

sudo nano /etc/systemd/system/run-script.service

Вставте наступний вміст:

[Unit]  
Description=Script Runner Service  
After=network.target  

[Service]  
Type=simple  
Restart=always  
User=ubuntu  
WorkingDirectory=/home/ubuntu/actions-runner  
ExecStart=/home/ubuntu/actions-runner/run.sh
[Install]  
WantedBy=multi-user.target

Виконайте ці скрипти:

sudo systemctl daemon-reload   
sudo systemctl enable run-script   
sudo systemctl start run-script   
sudo systemctl status run-script

Тепер ви побачите, що самохостинговий рнер присутній на GitHub Actions.

pic

5. Створення секрету бази даних (пароль) в AWS Secret Manager з ім'ям ‘/dev/djangoapi/db/password’

Спочатку налаштуйте AWS CLI локально та виконайте команду.

aws ssm put-parameter --name "/dev/djangoapi/db/password" --value "admin123" --type String --tags '[{"Key":"Region","Value":"ap-south-1"},{"Key":"Environment", "Value":"Dev"},{"Key":"Service", "Value":"admin123"}]'

pic

6.

Створення репозиторію ECR на AWS

Ми повинні створити репозиторій ECR з назвою django-app.

Перейдіть до ECR — → створіть репозиторій

pic

Тепер оновіть URI репозиторію ECR у файлі root/main.tf

pic

Перед тим, як створювати GitHub actions, додайте AWSACCESSKEYID та AWSSECRETACCESSKEY в змінні GitHub Actions.

Якщо у вас вже є ключ доступу та секретний ключ, то додайте їх туди.

pic

7. Створення інфраструктури за допомогою Terraform

Переконайтеся, що Terraform встановлений на вашій локальній системі. Використовуйте посилання для встановлення відповідно до вашої системи.

terraform workspace new staging  
terraform workspace select staging  
terraform init  
terraform plan  
terraform apply -auto-approve

9. GitHub Actions (Збірка та деплой)

Завантажте весь код у репозиторій GitHub, і це запустить GitHub Action.

pic

10. Доступ до Django застосунку через ALB DNS ім'я.

pic

Залишайтеся з нами!

Обов'язково слідкуйте за нами та підписуйтесь для отримання оновлень і нових блогів.

Перекладено з: Deploy Dockerize Django App on AWS ECS Fargate using GitHub Actions and Terraform

Leave a Reply

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