Added MIT License with: - Author: Luca Sacchi Ricciardi - Email: luca@lucasacchi.net - Website: https://www.lucasacchi.net - All rights reserved - Forum: Milan, Italy Updated README with License section referencing LICENSE file.
216 lines
7.4 KiB
Markdown
216 lines
7.4 KiB
Markdown
# Laboratori Cloud - Corso Soluzioni Cloud
|
|
|
|
Simulazione pratica di servizi cloud usando Docker locale.
|
|
|
|
Questo corso ti insegna i concetti fondamentali del cloud (IAM, Network, Compute, Storage, Database)
|
|
attraverso laboratori pratici che usano Docker per simulare servizi AWS/Azure/GCP.
|
|
|
|
## Perché questo corso?
|
|
|
|
I servizi cloud sono potenti, ma imparare su account reali può essere costoso e intimidatorio.
|
|
Questo corso usa Docker per simulare i componenti core della cloud infrastructure direttamente sul tuo computer.
|
|
Ogni laboratorio costruisce un parallelismo diretto tra i container locali e i servizi cloud reali.
|
|
|
|
## Prerequisiti
|
|
|
|
Prima di iniziare, assicurati di avere:
|
|
|
|
- Docker Engine >= 24.0 installato
|
|
- Docker Compose V2 (comando `docker compose`, non `docker-compose`)
|
|
- Utility di rete: netcat, curl, iproute2
|
|
|
|
### Risorse Minime Consigliate
|
|
|
|
- RAM: 16 GB (funziona con 8 GB, ma alcuni lab potrebbero essere lenti)
|
|
- CPU: 4 core
|
|
- Spazio disco: 20 GB liberi
|
|
|
|
### Installazione Docker
|
|
|
|
**Linux:**
|
|
```bash
|
|
# Ubuntu/Debian
|
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
sudo sh get-docker.sh
|
|
sudo usermod -aG docker $USER
|
|
```
|
|
|
|
**macOS:**
|
|
Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/
|
|
|
|
**Windows:**
|
|
Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/
|
|
|
|
## Quick Start
|
|
|
|
1. Clona questa repository:
|
|
```bash
|
|
git clone https://github.com/your-org/laboratori-cloud.git
|
|
cd laboratori-cloud
|
|
```
|
|
|
|
2. Verifica il tuo ambiente:
|
|
```bash
|
|
./scripts/check-env.sh
|
|
```
|
|
|
|
3. Se tutti i check passano, sei pronto per iniziare il primo laboratorio!
|
|
|
|
Vai in `labs/lab-01-iam/` e segui le istruzioni.
|
|
|
|
## Laboratori
|
|
|
|
Il corso è composto da 5 laboratori progressivi:
|
|
|
|
### 1. IAM & Sicurezza ✅ COMPLETATO
|
|
Configura utenti Linux, permessi Docker socket, capisci i paralleli IAM.
|
|
- Crea utenti con permessi limitati
|
|
- Configura accesso al Docker socket
|
|
- Container non-root per sicurezza
|
|
- Parallelismo: Utenti Linux -> IAM Users, Gruppi -> IAM Roles
|
|
|
|
**Documentazione:** [Tutorial](labs/lab-01-iam/tutorial/) | [How-to](labs/lab-01-iam/how-to-guides/) | [Reference](labs/lab-01-iam/reference/) | [Explanation](labs/lab-01-iam/explanation/)
|
|
|
|
### 2. Network & VPC ✅ COMPLETATO
|
|
Crea reti Docker isolate che simulano VPC e Subnets cloud.
|
|
- Reti bridge isolate con subnet personalizzate (10.0.1.0/24, 10.0.2.0/24)
|
|
- Regole di isolamento tra container (ping test)
|
|
- Reti private con flag `--internal` (simulano private subnet)
|
|
- Parallelismo: Docker Networks -> VPC, `--internal` -> Private Subnet, `--subnet` -> CIDR blocks
|
|
|
|
**Documentazione:** [Tutorial](labs/lab-02-network/tutorial/) | [How-to](labs/lab-02-network/how-to-guides/) | [Reference](labs/lab-02-network/reference/) | [Explanation](labs/lab-02-network/explanation/)
|
|
|
|
### 3. Compute & EC2 ✅ COMPLETATO
|
|
Deploy container con limiti CPU/memoria e healthchecks.
|
|
- Configura limiti di risorse (cpus, mem_limit)
|
|
- Implementa healthcheck personalizzati
|
|
- Parallelismo: Container -> EC2, Resource limits -> Instance types
|
|
|
|
**Documentazione:** [Tutorial](labs/lab-03-compute/tutorial/) | [How-to](labs/lab-03-compute/how-to-guides/) | [Reference](labs/lab-03-compute/reference/) | [Explanation](labs/lab-03-compute/explanation/)
|
|
|
|
### 4. Storage & S3 ✅ COMPLETATO
|
|
Configura Docker Volumes e MinIO per storage S3-compatible.
|
|
- Volumes named e bind mounts
|
|
- MinIO come S3 locale
|
|
- Parallelismo: Docker Volumes -> EBS, MinIO -> S3
|
|
- **Test:** 6/6 verifiche passate (100%)
|
|
|
|
**Documentazione:** [Tutorial](labs/lab-04-storage/tutorial/) | [How-to](labs/lab-04-storage/how-to-guides/) | [Reference](labs/lab-04-storage/reference/) | [Explanation](labs/lab-04-storage/explanation/)
|
|
|
|
### 5. Database & RDS
|
|
Deploy PostgreSQL in rete privata con persistenza dati.
|
|
- Container database in rete isolata
|
|
- Backup e restore dei dati
|
|
- Parallelismo: PostgreSQL container -> RDS, Volume -> Snapshot
|
|
|
|
## Struttura Repository
|
|
|
|
```
|
|
laboratori-cloud/
|
|
├── labs/ # Laboratori (1 per modulo cloud)
|
|
│ ├── lab-01-iam/ # IAM & Sicurezza
|
|
│ ├── lab-02-network/ # Network & VPC
|
|
│ ├── lab-03-compute/ # Compute & EC2
|
|
│ ├── lab-04-storage/ # Storage & S3
|
|
│ └── lab-05-database/ # Database & RDS
|
|
├── how-to-guides/ # Guide procedurali specifiche
|
|
├── reference/ # Specifiche tecniche e reference
|
|
└── scripts/ # Script di verifica e utilità
|
|
```
|
|
|
|
## Git Workflow
|
|
|
|
Questo repository segue [Conventional Commits](https://www.conventionalcommits.org/).
|
|
|
|
Esempi di commit che troverai:
|
|
- `feat(lab-01): add user configuration script`
|
|
- `test(lab-02): add network isolation test`
|
|
- `docs(lab-03): add explanation for healthchecks`
|
|
|
|
Ogni laboratorio è sviluppato su un branch isolato (es. `lab-01-iam`) e
|
|
mergeggiato su `main` solo quando completo e testato.
|
|
|
|
## Framework Diátaxis
|
|
|
|
Ogni laboratorio include 4 tipi di documento per supportare diversi stili di apprendimento:
|
|
|
|
1. **Tutorial** - Guida passo-passo incrementale
|
|
2. **How-to Guides** - Procedure specifiche e task-focused
|
|
3. **Reference** - Specifiche tecniche e parametri
|
|
4. **Explanation** - Concetti e parallelismi cloud/locale
|
|
|
|
## Troubleshooting
|
|
|
|
### Docker non parte
|
|
- Verifica che il demone Docker sia in esecuzione: `docker ps`
|
|
- Riavvia Docker: `sudo systemctl restart docker` (Linux)
|
|
|
|
### Script check-env.sh fallisce
|
|
- Verifica la versione di Docker: `docker --version` (deve essere >= 24.0)
|
|
- Verifica Compose V2: `docker compose version` (non `docker-compose`)
|
|
- Assicurati di essere nel gruppo docker: `groups $USER`
|
|
|
|
### Permesso negato su Docker socket
|
|
```bash
|
|
sudo usermod -aG docker $USER
|
|
# Fai logout e login oppure
|
|
newgrp docker
|
|
```
|
|
|
|
### Container non parte o crasha subito
|
|
- Controlla i log: `docker logs <container-name>`
|
|
- Verifica le risorse disponibili: `docker stats`
|
|
- Controlla le porte in uso: `docker ps`
|
|
|
|
### Reset completo ambiente
|
|
Per pulire tutto tra un lab e l'altro:
|
|
```bash
|
|
./scripts/reset-env.sh
|
|
```
|
|
|
|
Questo script ferma tutti i container, rimuove volumi e reti create per i laboratori.
|
|
|
|
## Safety First
|
|
|
|
Questo corso segue principi di sicurezza rigorosi:
|
|
|
|
1. **Minimo Privilegio**: I container non girano mai come root
|
|
2. **Isolamento di Rete**: Le reti private non espongono porte sull'host
|
|
3. **Limiti di Risorse**: Ogni container ha limiti CPU e memoria configurati
|
|
4. **Persistenza**: I dati sopravvivono al riavvio dei container
|
|
|
|
## Roadmap
|
|
|
|
### Progresso Complessivo: 100% (4/4 Lab Core completati)
|
|
|
|
| Phase | Stato | Descrizione |
|
|
|-------|------|------------|
|
|
| Phase 1 | ✅ COMPLETATA | Setup & Git Foundation |
|
|
| Phase 2 | ✅ COMPLETATA | Lab 01 - IAM & Sicurezza |
|
|
| Phase 3 | ✅ COMPLETATA | Lab 02 - Network & VPC |
|
|
| Phase 4 | ✅ COMPLETATA | Lab 03 - Compute & EC2 |
|
|
| Phase 5 | ✅ COMPLETATA | Lab 04 - Storage & S3 |
|
|
| Phase 6-10 | 📋 DEFINITO | Integration & Testing, Polish |
|
|
|
|
Vedi `.planning/ROADMAP.md` per dettagli completi.
|
|
|
|
## License
|
|
|
|
Copyright © 2024 Luca Sacchi Ricciardi
|
|
|
|
**Autore:** Luca Sacchi Ricciardi
|
|
**Email:** luca@lucasacchi.net
|
|
**Website:** https://www.lucasacchi.net
|
|
|
|
Tutti i diritti sono riservati. Questo progetto è concesso sotto licenza MIT - vedi file [LICENSE](LICENSE) per dettagli completi.
|
|
|
|
**Foro Competente:** Per qualsiasi controversia derivante da questo software, il foro competente esclusivo è il tribunale di Milano, Italia.
|
|
|
|
## Contributing
|
|
|
|
Questo è un progetto didattico. Suggerimenti e miglioramenti sono benvenuti tramite pull request.
|
|
|
|
## License
|
|
|
|
MIT License - Vedi LICENSE file per dettagli.
|