Panoramica
Questa guida ti accompagna attraverso la distribuzione di CaseBender su Google Cloud Run utilizzando le nostre immagini Docker precostruite.
Prerequisiti
- Account Google Cloud
- Google Cloud CLI installato
- Docker installato
Passo 1: Configurazione Iniziale
Installa Google Cloud CLI
Inizializza Progetto
# Imposta il tuo ID progetto
gcloud config set project YOUR_PROJECT_ID
# Abilita le API richieste
gcloud services enable \
cloudbuild.googleapis.com \
run.googleapis.com \
secretmanager.googleapis.com \
cloudresourcemanager.googleapis.com \
artifactregistry.googleapis.com
Passo 2: Configura l’Infrastruttura Cloud
Crea Bucket Cloud Storage
# Crea bucket storage
gsutil mb -l us-central1 gs://casebender-storage
# Crea account servizio per storage
gcloud iam service-accounts create casebender-storage \
--display-name "CaseBender Storage Service Account"
# Ottieni email account servizio
STORAGE_SA_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:CaseBender Storage Service Account" \
--format="value(email)")
# Concedi permessi
gsutil iam ch \
serviceAccount:$STORAGE_SA_EMAIL:objectViewer,objectCreator \
gs://casebender-storage
# Crea e scarica chiave account servizio
gcloud iam service-accounts keys create storage-key.json \
--iam-account=$STORAGE_SA_EMAIL
# Crea segreto per credenziali storage
gcloud secrets create casebender-storage-key \
--replication-policy="automatic"
# Importa la chiave account servizio come segreto
gcloud secrets versions add casebender-storage-key \
--data-file=storage-key.json
Configura Cloud SQL (PostgreSQL)
# Crea istanza PostgreSQL
gcloud sql instances create casebender-db \
--database-version=POSTGRES_14 \
--cpu=2 \
--memory=4GB \
--region=us-central1 \
--root-password="YOUR_SECURE_PASSWORD"
# Crea database
gcloud sql databases create casebender \
--instance=casebender-db
# Crea utente
gcloud sql users create casebender \
--instance=casebender-db \
--password="YOUR_SECURE_PASSWORD"
Configura Memorystore (Redis)
# Crea istanza Redis
gcloud redis instances create casebender-redis \
--size=2 \
--region=us-central1 \
--redis-version=redis_6_x
Configura Secret Manager
# Crea e memorizza variabili d'ambiente
cat << EOF | gcloud secrets create casebender-env --data-file=-
AUTH_SECRET=your-auth-secret
AUTH_SALT=your-auth-salt
POSTGRES_PRISMA_URL="postgresql://casebender:YOUR_SECURE_PASSWORD@/casebender?host=/cloudsql/YOUR_PROJECT_ID:us-central1:casebender-db"
REDIS_URL="redis://REDIS_IP_ADDRESS:6379"
GOOGLE_STORAGE_BUCKET=casebender-storage
EOF
Passo 3: Scarica e Carica Immagini Docker
# Crea repository Artifact Registry
gcloud artifacts repositories create casebender \
--repository-format=docker \
--location=us-central1
# Configura Docker per Artifact Registry
gcloud auth configure-docker us-central1-docker.pkg.dev
# Scarica immagini CaseBender
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest
# Tagga immagini per Google Artifact Registry
docker tag casebender/casebender:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker tag casebender/workflow-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker tag casebender/misp-processor:latest us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest
# Carica immagini
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest
docker push us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest
Passo 4: Distribuisci Servizi
Distribuisci Applicazione Principale
# Distribuisci su Cloud Run
gcloud run deploy casebender \
--image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/app:latest \
--platform managed \
--region us-central1 \
--allow-unauthenticated \
--set-env-vars GOOGLE_STORAGE_BUCKET=casebender-storage \
--set-secrets "/secrets/storage-key=casebender-storage-key:latest" \
--service-account=$STORAGE_SA_EMAIL \
--add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
--set-secrets "/app/.env=casebender-env:latest"
Distribuisci Processore Workflow
# Distribuisci processore workflow
gcloud run deploy workflow-processor \
--image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/workflow-processor:latest \
--platform managed \
--region us-central1 \
--no-allow-unauthenticated \
--service-account=$STORAGE_SA_EMAIL \
--add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
--set-secrets "/app/.env=casebender-env:latest"
Distribuisci Processore MISP
# Distribuisci processore MISP
gcloud run deploy misp-processor \
--image us-central1-docker.pkg.dev/$PROJECT_ID/casebender/misp-processor:latest \
--platform managed \
--region us-central1 \
--no-allow-unauthenticated \
--service-account=$STORAGE_SA_EMAIL \
--add-cloudsql-instances $PROJECT_ID:us-central1:casebender-db \
--set-secrets "/app/.env=casebender-env:latest"
Passo 5: Configura Dominio e SSL
Mappa Dominio Personalizzato
# Aggiungi mappatura dominio
gcloud run domain-mappings create \
--service casebender \
--domain your-domain.com \
--region us-central1
Segui i passaggi di verifica DNS nella Console di Google Cloud per completare la mappatura del dominio.
Monitoraggio e Manutenzione
Configura Monitoraggio
- Naviga su Cloud Monitoring nella Console di Google Cloud
- Crea un controllo di disponibilità per il tuo servizio
- Configura avvisi per:
- Tassi di errore
- Latenza
- Numero di istanze
- Utilizzo memoria
Visualizza Log
# Visualizza log servizio
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=casebender" --limit 50
# Streaming log
gcloud logging tail "resource.type=cloud_run_revision AND resource.labels.service_name=casebender"
Aggiorna Applicazione
Per distribuire aggiornamenti:
# Compila e distribuisci nuova versione
gcloud builds submit --config cloudbuild.yaml
# Ripristina se necessario
gcloud run services rollback casebender \
--to-revision=REVISION_ID \
--region=us-central1
Ottimizzazione dei Costi
-
Configurazione Scalabilità Automatica
gcloud run services update casebender \
--min-instances=1 \
--max-instances=10 \
--region=us-central1
-
Allocazione Risorse
gcloud run services update casebender \
--memory=1Gi \
--cpu=1 \
--region=us-central1
Risoluzione Problemi
Problemi Comuni
-
Problemi di Connessione
- Verifica connessione Cloud SQL
- Controlla connettività Redis
- Valida variabili d’ambiente
-
Problemi di Performance
- Rivedi metriche istanza
- Controlla allocazione risorse
- Analizza pattern richieste
-
Errori di Distribuzione
- Controlla log build
- Verifica permessi account servizio
- Rivedi configurazione distribuzione
Prossimi Passi
- Configura pipeline CI/CD
- Configura strategie di backup
- Implementa monitoraggio e avvisi
- Rivedi migliori pratiche di sicurezza