Este proyecto implementa un pipeline de despliegue continuo para una aplicación Nginx utilizando AWS Fargate, con una estrategia Blue/Green deployment y alta disponibilidad.
flowchart TD
Dev[Desarrolladores] --> Repo[GitHub Repo]
Repo --> Actions[GitHub Actions]
Actions -->|Approval| Issue[Issue Approval]
Actions -->|Build| ECR[Amazon ECR]
Actions -->|Deploy| Deploy[AWS CodeDeploy]
subgraph "Alta Disponibilidad"
Deploy --> Fargate[ECS Fargate]
Fargate --> ALB[Application Load Balancer]
subgraph "Zonas de Disponibilidad"
direction LR
Fargate --> AZ1[AZ-1]
Fargate --> AZ2[AZ-2]
Fargate --> AZ3[AZ-3]
end
end
ALB --> Users[Users]
style Dev fill:#f9f,stroke:#333
style Repo fill:#bbf,stroke:#333
style Actions fill:#dfd,stroke:#333
style Issue fill:#fdd,stroke:#333
style ECR fill:#ffd,stroke:#333
style Deploy fill:#dff,stroke:#333
style Fargate fill:#ddf,stroke:#333
style ALB fill:#fdf,stroke:#333
style AZ1 fill:#fff,stroke:#333
style AZ2 fill:#fff,stroke:#333
style AZ3 fill:#fff,stroke:#333
.
├── .github
│ └── workflows
│ ├── prod.yml
│ └── uat.yml
├── infrastructure
│ └── main.tf
├── Dockerfile
├── task-definition.json
└── index.html
develop
master
AWS_PROD_ACCESS_KEY_ID
AWS_PROD_SECRET_ACCESS_KEY
AWS_ACCOUNT_ID
PUBLIC_SUBNET_IDS
SECURITY_GROUP_ID
GREEN_TARGET_GROUP_ARN
GREEN_LISTENER_RULE_ARN
ALB_DNS
ECR_REPOSITORY_NAME
ECS_CLUSTER_NAME
CONTAINER_NAME
SERVICE_PREFIX