Production-ready мікросервісна архітектура в AWS EKS з повною автоматизацією CI/CD
Проєкт базується на хмарній інфраструктурі AWS, розгорнутій за допомогою Terraform. Архітектура реалізована з урахуванням високої доступності (High Availability) та автоматизації GitOps.
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 забезпечують розгортання самих мікросервісів, автоматизуючи збірку та оновлення маніфестів.
Проєкт використовує 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 |
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
🔗 Подробніше про пайплайни тут
🔗 Подробніше про моніторинг тут
-
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






