Skip to content

Latest commit

 

History

2,794 Commits

Folders and files

Repository files navigation

Online Boutique by ExitCodeOne

  Global CI/CD Pipeline

  Production-ready мікросервісна архітектура в AWS EKS з повною автоматизацією CI/CD


🏗 Архітектура системи

Проєкт базується на хмарній інфраструктурі AWS, розгорнутій за допомогою Terraform. Архітектура реалізована з урахуванням високої доступності (High Availability) та автоматизації GitOps.

image

🔗 Відкрити схему в Excalidraw

🛠 Технічні особливості реалізації

EKS Control Plane: Повністю керований кластер, де AWS відповідає за доступність API Server, Scheduler та Etcd. Забезпечує нативну інтеграцію з ресурсами AWS.

Networking & High Availability: VPC Multi-AZ - мережа розгорнута у двох зонах доступності (AZ A/B) для забезпечення відмовостійкості.

Public Subnets: Розміщують NAT Gateways (для виходу приватних компонентів у світ) та Application Load Balancer (ALB), який є точкою входу для користувачів.

Private Subnets: Місце знаходження Worker Nodes. Завдяки AWS VPC CNI, кожен Pod отримує власну IP-адресу з пулу VPC через ENI, що мінімізує оверхед на маршрутизацію.

Traffic Management (Ingress Flow): 1.  Route 53 (DNS запити) → 2.  AWS ALB (L7 Load Balancing & SSL termination) → 3.  Target Groups (динамічна реєстрація Pods) → 4.  Microservices.

Infrastructure as Code (IaC): Повне керування ресурсами через Terraform. Використання модульного підходу та віддалених стейтів (S3) дозволяє безпечно масштабувати інфраструктуру кільком DevOps.

CI/CD Strategy: 

  • Terraform Layer: Керує "фундаментом" (VPC, EKS, IAM roles).
  • Application Layer: Skaffold + Kustomize забезпечують розгортання самих мікросервісів, автоматизуючи збірку та оновлення маніфестів.

🚀 Запуск та CI/CD

Проєкт використовує Skaffold для керування життєвим циклом додатків та GitHub Actions для повної автоматизації.

Доступні профілі розгортання:

Профіль Опис Команда (локально)
local Розробка на Minikube/Docker Desktop (без push в ECR) skaffold dev -p local
staging Автоматичний деплой при пуші в гілку staging skaffold run -p staging
production Деплой стабільних версій при пуші в main skaffold run -p production

Pipeline Workflows:

1.  Terraform CI/CD: Автоматично валідує, планує та застосовує зміни інфраструктури. Використовує окремі S3 Backends для staging та production.

2.  Global CI/CD (Skaffold):

    - Build: Збирає Docker-образи, тегує їх номером запуску (run_number) та пушить в Amazon ECR.

    - Deploy: Оновлює kubeconfig, підставляє актуальні теги та деплоїть маніфести в потрібний Namespace.

    - Health Check: Очікує на успішний Rollout фронтенду перед завершенням.

3.  Infrastructure Destruction (DANGER): Спеціальний Workflow для повного видалення ресурсів. Спочатку примусово очищує Kubernetes-ресурси (Ingress, LB), щоб уникнути "завислих" ресурсів в AWS, а потім виконує terraform destroy.


🛠 Технологічний стек

  • IaC: Terraform
  • Orchestration: Kubernetes (EKS)
  • Package Manager: Kustomization
  • Development Tool: Skaffold
  • CI/CD: GitHub Actions
  • Cloud: AWS (VPC, EKS, ECR, ALB, Route 53)

📸 Скріншоти проєкту

🛒 Працюючий застосунок

Тут наведено декілька скріншотів вже працюючого застоскунку з поділом на різні середовища, а саме Production та Staging. Вони знаходяться на одному домені, але з різними піддоменами. Thank you to Route 53

🚀 Production environment:


image image

🛠 Staging environment


image image

🟢 Стан деплою в AWS

Вигляд наших кластерів у консолі EKS:

image

Список запущених віртуальних машин, які виступають як Worker Nodes для Kubernetes (EC2):

image

ERC, місце де зберігаються наші збілджені образи:

image image image image

🛠 GitHub Actions Pipelines

🔗 Подробніше про пайплайни тут

Screenshot 2026-02-28 at 10 25 48 image image image image

📊 Моніторинг та Дашборди

🔗 Подробніше про моніторинг тут

image

image

image

image

image

image

image


📅 Майбутні покращення (Backlog)

  • Security: Впровадження HashiCorp Vault для керування секретами замість Github Secrets.

  • Service Mesh: Інтеграція Istio для Canary-релізів та глибшого спостереження за трафіком (mTLS).

  • Cost Optimization: Налаштування AWS для більш ефективного автоскейлінгу нод.

  • GitOps Pull Model: Перехід з GitHub Actions Push на ArgoCD для синхронізації стану кластера.

  • Testing: Додавання етапу Terratest для валідації інфраструктурного коду.


Made with ❤️ by ExitCodeOne

About

This project demonstrates a production-ready microservices architecture deployed on AWS EKS using Terraform for IaC. It features a robust CI/CD pipeline via GitHub Actions and Skaffold, supporting automated deployments to Staging and Production environments.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages