HabitQuest Deployment on Kubernetes
Il deployment dell'applicazione HabitQuest su Kubernetes è stato organizzato seguendo una chiara separazione delle responsabilità attraverso tre layer principali: - Application Layer: servizi applicativi del dominio business - Platform Layer: infrastruttura di base (message broker, ingress controller) - Observability Layer: stack completo per monitoring, logging e tracing
Namespace Utilizzati:
default # Servizi applicativi
prometheus-system # Prometheus e Tempo
logging # Loki, Fluent Bit, Grafana
Deployment dei Layer
1. Platform Layer
Il platform layer deve essere deployato per primo in quanto fornisce l'infrastruttura di base: - Kafka: Message broker con modalità KRaft (senza Zookeeper) - Kafka UI: Interfaccia web per gestione e monitoring
2. Observability Layer
Lo stack di osservabilità viene deployato successivamente: - Prometheus: Raccolta metriche - Tempo: Distributed tracing - Loki: Aggregazione log - Fluent Bit: Shipping log dai pod - Grafana: Visualizzazione unificata
3. Application Layer
Infine, i servizi applicativi vengono deployati con ordinamento basato sulle dipendenze:
Ordine di deployment:
1. avatar-service, tracking-service (servizi core senza dipendenze REST)
2. guild-service, marketplace-service, quest-service (dipendono da avatar-service)
3. notification-service (consumer Kafka)
4. edge-service (API Gateway)
Configurazione di Rete
Service Discovery
I servizi comunicano tramite DNS interno Kubernetes:
<service-name>.<namespace>:<port>
# Esempio:
avatar-service.default:8081
Porte Esposte
| Servizio | Porta | Tipo |
|---|---|---|
| edge-service | 8080 | LoadBalancer |
| avatar-service | 8081 | ClusterIP |
| guild-service | 8082 | ClusterIP |
| marketplace-service | 8083 | ClusterIP |
| quest-service | 8084 | ClusterIP |
| tracking-service | 8085 | ClusterIP |
| notification-service | 8086 | ClusterIP |
| kafka-service | 9092, 8080 | LoadBalancer |