Un'applicazione cloud-native completa che recupera dati meteo in tempo reale e li pubblica su una dashboard statica ospitata su AWS, orchestrata con Kubernetes e automatizzata via CI/CD.
L'applicazione esegue i seguenti passaggi:
- Recupero Dati: Uno script Python 3.12 interroga le API di OpenWeather.
- Generazione Frontend: Lo script genera dinamicamente un file
index.html(Dark Mode). - Storage & Hosting: Caricamento automatico su un bucket Amazon S3 (Static Website Hosting).
- Containerizzazione: Immagine Docker basata su Alpine Linux, archiviata su Amazon ECR.
- Orchestrazione: Un CronJob di Kubernetes gestisce l'esecuzione periodica dello script.
- Infrastructure as Code: Tutta l'infrastruttura AWS è gestita tramite Terraform.
- CI/CD: Pipeline automatizzata con GitHub Actions per il Build & Push dell'immagine.
- Cloud: AWS (S3, ECR, IAM)
- Orchestrazione: Kubernetes (Minikube)
- IaC: Terraform
- CI/CD: GitHub Actions
- Container: Docker (Python 3.12 Alpine)
- Linguaggio: Python (Boto3, Requests)
/app: Codice sorgente Python, Dockerfile erequirements.txt./infra: Manifest Terraform per S3 ed ECR./k8s: Manifest Kubernetes per il CronJob e l'iniezione dei Secret..github/workflows: Pipeline YAML per l'automazione CI/CD.
Il progetto utilizza un modello di sicurezza a "zero-leak":
- Locali: Gestiti tramite file
.env(ignorato da Git). - GitHub: Utilizzo di GitHub Actions Secrets per le credenziali AWS.
- Kubernetes: Utilizzo di K8s Secrets per l'iniezione sicura delle variabili d'ambiente nel container.
- Infrastruttura:
cd infra && terraform apply - Secrets K8s:
kubectl create secret generic aws-creds --from-literal=... - Deploy:
kubectl apply -f k8s/weather-cronjob.yaml