Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌦️ AWS Weather DevOps Project

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.

🚀 Panoramica del Progetto

L'applicazione esegue i seguenti passaggi:

  1. Recupero Dati: Uno script Python 3.12 interroga le API di OpenWeather.
  2. Generazione Frontend: Lo script genera dinamicamente un file index.html (Dark Mode).
  3. Storage & Hosting: Caricamento automatico su un bucket Amazon S3 (Static Website Hosting).
  4. Containerizzazione: Immagine Docker basata su Alpine Linux, archiviata su Amazon ECR.
  5. Orchestrazione: Un CronJob di Kubernetes gestisce l'esecuzione periodica dello script.
  6. Infrastructure as Code: Tutta l'infrastruttura AWS è gestita tramite Terraform.
  7. CI/CD: Pipeline automatizzata con GitHub Actions per il Build & Push dell'immagine.

🛠️ Tech Stack

  • Cloud: AWS (S3, ECR, IAM)
  • Orchestrazione: Kubernetes (Minikube)
  • IaC: Terraform
  • CI/CD: GitHub Actions
  • Container: Docker (Python 3.12 Alpine)
  • Linguaggio: Python (Boto3, Requests)

📂 Struttura del Repository

  • /app: Codice sorgente Python, Dockerfile e requirements.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.

⚙️ Configurazione Sicurezza (Secrets)

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.

🏁 Come Eseguire

  1. Infrastruttura: cd infra && terraform apply
  2. Secrets K8s: kubectl create secret generic aws-creds --from-literal=...
  3. Deploy: kubectl apply -f k8s/weather-cronjob.yaml

About

Cloud-Native Weather Dashboard. Automated infrastructure with Terraform (AWS S3 & ECR), containerized with Docker, and featuring a real-time static frontend. Built for learning DevOps workflows and AWS resource management.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages