Skip to content

Latest commit

 

History

History
230 lines (173 loc) · 5.67 KB

File metadata and controls

230 lines (173 loc) · 5.67 KB

🚀 Deployment Guide - Potpie Service su Lightsail VPS

Guida rapida per deployare il microservizio Potpie sul tuo cluster Kubernetes Lightsail esistente.

📋 Setup Completato

  • ✅ Lightsail VPS con Kubernetes
  • ✅ Redis (redis-client o valkey-0) già configurato
  • ✅ Microservizio BullMQ con monitoring implementato

🔐 Step 1: Configurare GitHub Secrets

Vai su GitHub → Settings → Secrets and variables → Actions e aggiungi:

Secret Name Valore Descrizione
DOCKER_PASSWORD La tua password Docker Hub Per push automatico immagini
POTPIE_API_KEY La tua chiave Potpie.ai API key per il servizio
KUBE_CONFIG Kubeconfig base64 Configurazione kubectl

Nota: La password Redis viene automaticamente recuperata dal secret valkey-auth esistente nel tuo cluster.

Come ottenere KUBE_CONFIG:

# Dalla tua VPS Lightsail
kubectl config view --raw | base64 -w 0

🚀 Step 2: Deployment Automatico

Opzione A: Push su main branch

git add .
git commit -m "Deploy potpie service"
git push origin main

Opzione B: Deployment manuale

  1. Vai su GitHub → Actions
  2. Seleziona "Deploy Potpie Service to Lightsail Kubernetes"
  3. Clicca "Run workflow"

📊 Step 3: Verificare il Deployment

Dalla tua VPS Lightsail:

# Controllare i pods
kubectl get pods -l app=potpie-service

# Controllare il servizio
kubectl get svc potpie-service

# Vedere i logs
kubectl logs -l app=potpie-service -f

# Controllare Redis esistente
kubectl get svc | grep -E "(redis|valkey)"

Testare il servizio:

# Ottenere IP esterno
EXTERNAL_IP=$(kubectl get svc potpie-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

# Test health
curl http://$EXTERNAL_IP/health

# Test queue stats
curl http://$EXTERNAL_IP/queue/stats

# Test metrics (Prometheus)
curl http://$EXTERNAL_IP/metrics

🧪 Step 4: Test Completo

Avviare un'analisi:

curl -X POST http://$EXTERNAL_IP/analyze \
  -H "Content-Type: application/json" \
  -d '{
    "repo": "facebook/react",
    "branch": "main", 
    "question": "Explain the component architecture"
  }'

Controllare lo stato:

# Sostituisci PROJECT_ID con l'ID ritornato
curl http://$EXTERNAL_IP/status/PROJECT_ID

🔧 Configurazione Valkey TLS

Il servizio è configurato per connettersi al tuo valkey-0 esistente con:

  • TLS encryption (porta 6379)
  • Password authentication (dal secret valkey-auth)
  • Cross-namespace communication (valkeydefault)
  • Service discovery automatico

Verifica connessione Valkey:

# Controllare valkey service
kubectl get svc valkey-service -n valkey

# Test connessione TLS
kubectl run valkey-test --image=valkey/valkey:7.2 --rm -it -- \
  valkey-cli -h valkey-service.valkey.svc.cluster.local -p 6379 --tls ping

🔧 Troubleshooting

Problemi comuni:

1. Valkey TLS connection failed

# Verificare valkey pod
kubectl get pods -n valkey
kubectl logs valkey-0 -n valkey

# Verificare service
kubectl get svc valkey-service -n valkey

# Test connessione diretta
kubectl exec -it valkey-0 -n valkey -- valkey-cli --tls ping

2. Password authentication failed

# Verificare secret valkey
kubectl get secret valkey-auth -n valkey -o yaml

# Verificare password in potpie
kubectl get secret potpie-secrets -o yaml

2. Image pull failed

# Verificare immagine su Docker Hub
docker pull digital@pixdata.io/coderide-potpie-service:latest

# Controllare eventi deployment
kubectl describe deployment potpie-service

3. Pods non ready

# Logs dettagliati
kubectl logs -l app=potpie-service --previous

# Eventi pod
kubectl describe pods -l app=potpie-service

Comandi utili:

# Status completo
kubectl get all -l app=potpie-service

# Eventi recenti
kubectl get events --sort-by='.lastTimestamp' | tail -20

# Restart deployment
kubectl rollout restart deployment/potpie-service

# Rollback
kubectl rollout undo deployment/potpie-service

📈 Monitoring

Metriche disponibili su /metrics:

  • http_requests_total - Richieste HTTP totali
  • queue_jobs_total - Job in coda totali
  • queue_job_duration_seconds - Durata job
  • websocket_connections_active - Connessioni WebSocket attive

Dashboard Grafana (se disponibile):

# Request rate
rate(http_requests_total[5m])

# Queue depth  
queue_jobs_waiting + queue_jobs_active

# Success rate
rate(queue_jobs_total{status="completed"}[5m]) / rate(queue_jobs_total[5m])

🔄 Updates

Aggiornare il servizio:

  1. Modifica il codice
  2. Commit e push su main
  3. GitHub Actions deploierà automaticamente

Deployment manuale (se necessario):

# Build locale
docker build -t digital@pixdata.io/coderide-potpie-service:latest .
docker push digital@pixdata.io/coderide-potpie-service:latest

# Deploy su Kubernetes
kubectl apply -f kubernetes/
kubectl rollout status deployment/potpie-service

🎯 Risultato Finale

Dopo il deployment avrai:

  • Microservizio Potpie con BullMQ queue system
  • WebSocket real-time per aggiornamenti stato
  • Monitoring Prometheus con metriche custom
  • Auto-scaling con 2 repliche
  • Health checks automatici
  • Deployment automatico via GitHub Actions

Endpoint disponibili:

  • GET / - Health check base
  • GET /health - Health check dettagliato
  • POST /analyze - Avvia analisi repository
  • GET /status/:projectId - Stato analisi
  • GET /queue/stats - Statistiche code
  • GET /metrics - Metriche Prometheus
  • WebSocket / - Aggiornamenti real-time

Il servizio è ora pronto per essere integrato con il tuo backend Coderide! 🎉