Sistema completo per la gestione delle raccomandazioni di KRR (Kubernetes Resource Recommender) con interfaccia web, applicazione di patch automatiche, backup e rollback.
Il KRR Management System è una soluzione modulare che permette di:
- Importare i risultati JSON di KRR
- Visualizzare le raccomandazioni in un'interfaccia web intuitiva
- Generare patch Kubernetes per applicare le ottimizzazioni
- Applicare le patch con diverse strategie (conservativo, bilanciato, aggressivo)
- Effettuare backup automatici prima dell'applicazione
- Rollback delle modifiche se necessario
- Monitorare lo stato delle applicazioni dopo le modifiche
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ React UI │ │ Node.js API │ │ PostgreSQL │
│ (Frontend) │◄──►│ (Backend) │◄──►│ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Kubernetes API │
│ (K8s Cluster) │
└─────────────────┘
- KRR Parser: Parsing e validazione JSON di KRR
- Patch Generator: Generazione patch YAML per Kubernetes
- K8s Manager: Gestione risorse Kubernetes (backup, apply, rollback)
- Audit System: Logging e tracking di tutte le operazioni
- Docker e Docker Compose
- Kubectl configurato per il cluster target
- Node.js 18+ (per sviluppo locale)
- PostgreSQL 15+ (per produzione)
# Clone del repository
git clone <repository-url>
cd krr-management-system
# Avvio servizi
docker-compose up -d
# Verifica stato
docker-compose psL'applicazione sarà disponibile su:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Database: localhost:5432
# Build delle immagini
./scripts/build.sh --push
# Deploy su K8s
./scripts/deploy.sh
# Per accesso locale tramite port-forward
./scripts/deploy.sh --port-forward- Esegui KRR sul tuo cluster:
krr simple -f json --fileoutput results.json- Carica il file JSON tramite l'interfaccia web:
- Vai su "Upload Scansione"
- Trascina il file JSON o usa il browser
- Compila i metadati (Cluster ID, Prometheus URL)
- Clicca "Carica Scansione"
- Dashboard: Overview generale con statistiche
- Raccomandazioni: Lista dettagliata con filtri per:
- Priorità (CRITICAL, HIGH, MEDIUM, LOW)
- Namespace
- Tipo di risorsa
- Percentuale di risparmio
- Seleziona raccomandazioni dalla lista
- Clicca "Genera Patch"
- Scegli la strategia:
- Conservativo: Solo riduzioni >20%
- Bilanciato: Riduzioni >10% con aumenti limitati
- Aggressivo: Applica tutte le raccomandazioni
- Anteprima delle patch generate
- Applica con "Dry Run" per test o direttamente
- Raggruppa più container della stessa risorsa
- Applica modifiche in batch per ridurre interruzioni
- Gestione automatica dei rollback
- Backup automatico: Creato prima di ogni applicazione
- Verifica integrità: Checksum per validare i backup
- Rollback selettivo: Per singole patch o interi batch
- Monitoraggio: Tracking dello stato post-applicazione
NODE_ENV=production
DATABASE_URL=postgres://user:pass@host:5432/db
CLUSTER_ID=production-cluster
LOG_LEVEL=info
CORS_ORIGIN=https://your-domain.comREACT_APP_API_URL=https://api.your-domain.comIl sistema utilizza PostgreSQL con schema ottimizzato per:
- Scansioni: Metadati e risultati raw di KRR
- Raccomandazioni: Dati strutturati per l'UI
- Patch: Storia delle applicazioni
- Backup: Copie di sicurezza delle risorse
- Audit Log: Tracciamento completo delle operazioni
- Applica solo riduzioni significative (>20%)
- Aumenti limitati al 10%
- Preserva i limits delle risorse
- Riduce il rischio di instabilità
- Riduzioni moderate (>10%)
- Aumenti fino al 25%
- Bilanciamento risparmi/stabilità
- Applica tutte le raccomandazioni
- Massimizza i risparmi
- Raccomandato solo per ambienti di test
Il sistema richiede permessi per:
- Lettura: deployments, statefulsets, daemonsets, jobs, cronjobs
- Aggiornamento: Per applicare le patch
- Namespace: Lista e lettura
- Logging completo di tutte le operazioni
- Tracciabilità degli utenti e delle modifiche
- Backup verificabili con checksum
- Rollback garantito per ogni modifica
- Backend:
GET /api/health - Database: Connessione PostgreSQL
- K8s: Verifica accesso al cluster
- Numero di raccomandazioni per priorità
- Risparmi potenziali (CPU/Memory)
- Successo/fallimento delle applicazioni
- Tempo di esecuzione delle operazioni
Strutturato con livelli:
- INFO: Operazioni normali
- WARN: Situazioni anomale non critiche
- ERROR: Errori che richiedono attenzione
- DEBUG: Dettagli per troubleshooting
# Backend
cd backend
npm install
npm run dev
# Frontend
cd frontend
npm install
npm start
# Database (con Docker)
docker run -d \
--name postgres-krr \
-e POSTGRES_DB=krr_management \
-e POSTGRES_USER=krr_user \
-e POSTGRES_PASSWORD=krr_password \
-p 5432:5432 \
postgres:15-alpine# Backend unit tests
cd backend
npm test
# Integration tests
npm run test:integration
# Frontend tests
cd frontend
npm testL'API segue i principi REST con endpoint:
GET /api/scans- Lista scansioniPOST /api/scans/upload- Upload nuovo scanGET /api/recommendations- Lista raccomandazioniPOST /api/patches/generate- Genera patchPOST /api/patches/apply- Applica patchPOST /api/patches/:id/rollback- Rollback patch
Documentazione completa disponibile su /api/docs (Swagger).
# Verifica stato PostgreSQL
docker-compose logs postgres
# Reset database
docker-compose down -v
docker-compose up -d postgres# Verifica RBAC
kubectl auth can-i get deployments --as=system:serviceaccount:krr-management:krr-management-backend
# Applica RBAC
kubectl apply -f kubernetes/rbac.yaml- Verifica che la risorsa esista ancora
- Controlla che non ci siano conflitti di resourceVersion
- Usa dry-run per testare prima dell'applicazione
# Backend logs
docker-compose logs -f backend
# K8s logs
kubectl logs -f deployment/krr-management-backend -n krr-management
# Database logs per query lente
docker-compose exec postgres tail -f /var/log/postgresql/postgresql.log# Backup automatico giornaliero
docker-compose exec postgres pg_dump -U krr_user krr_management > backup_$(date +%Y%m%d).sql
# Restore
docker-compose exec -T postgres psql -U krr_user krr_management < backup_20240101.sql# Export configurazione
kubectl get all,ingress,secrets,configmaps -n krr-management -o yaml > krr-management-backup.yaml
# Restore
kubectl apply -f krr-management-backup.yaml- Integrazione notifiche Slack/Teams
- Scheduling automatico scansioni
- Dashboard metriche avanzate
- Export report PDF
- Supporto multi-cluster
- Machine Learning per raccomandazioni custom
- Integrazione GitOps (ArgoCD/Flux)
- API per automazione CI/CD
- Supporto risorse custom (GPU, storage)
- Ottimizzazione costi cloud
- Governance e policy compliance
- Multi-tenancy
- Fork del repository
- Crea feature branch (
git checkout -b feature/amazing-feature) - Commit delle modifiche (
git commit -m 'Add amazing feature') - Push al branch (
git push origin feature/amazing-feature) - Apri Pull Request
- Segui le convenzioni di naming esistenti
- Aggiungi test per nuove funzionalità
- Aggiorna la documentazione
- Rispetta il linting e formattazione
Questo progetto è rilasciato sotto licenza MIT. Vedi LICENSE per dettagli.
- Issues: Usa GitHub Issues per bug e richieste
- Discussions: Per domande generali e discussioni
- Security: Invia email a security@your-domain.com per vulnerabilità
Made with ❤️ for Kubernetes optimization