Descripción General
Esta guía lo lleva a través de la implementación de CaseBender en Google Cloud Run utilizando nuestras imágenes Docker precompiladas.
Prerrequisitos
- Cuenta de Google Cloud
- CLI de Google Cloud instalado
- Docker instalado
Paso 1: Configuración Inicial
Instalar CLI de Google Cloud
Inicializar Proyecto
# Establecer su ID de proyecto
gcloud config set project SU_ID_DE_PROYECTO
# Habilitar APIs requeridas
gcloud services enable \
cloudbuild.googleapis.com \
run.googleapis.com \
secretmanager.googleapis.com \
cloudresourcemanager.googleapis.com \
artifactregistry.googleapis.com
Paso 2: Configurar Infraestructura en la Nube
Crear Bucket de Cloud Storage
# Crear bucket de almacenamiento
gsutil mb -l us-central1 gs://casebender-storage
# Crear cuenta de servicio para almacenamiento
gcloud iam service-accounts create casebender-storage \
--display-name "CaseBender Storage Service Account"
# Obtener el correo electrónico de la cuenta de servicio
STORAGE_SA_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:CaseBender Storage Service Account" \
--format="value(email)")
# Otorgar permisos
gsutil iam ch \
serviceAccount:$STORAGE_SA_EMAIL:objectViewer,objectCreator \
gs://casebender-storage
# Crear y descargar clave de cuenta de servicio
gcloud iam service-accounts keys create storage-key.json \
--iam-account=$STORAGE_SA_EMAIL
# Crear secreto para credenciales de almacenamiento
gcloud secrets create casebender-storage-key \
--replication-policy="automatic"
# Importar la clave de cuenta de servicio como secreto
gcloud secrets versions add casebender-storage-key \
--data-file=storage-key.json
Configurar Cloud SQL (PostgreSQL)
# Crear instancia PostgreSQL
gcloud sql instances create casebender-db \
--database-version=POSTGRES_14 \
--cpu=2 \
--memory=4GB \
--region=us-central1 \
--root-password="SU_CONTRASEÑA_SEGURA"
# Crear base de datos
gcloud sql databases create casebender \
--instance=casebender-db
# Crear usuario
gcloud sql users create casebender \
--instance=casebender-db \
--password="SU_CONTRASEÑA_SEGURA"
Configurar Memorystore (Redis)
# Crear instancia Redis
gcloud redis instances create casebender-redis \
--size=2 \
--region=us-central1 \
--redis-version=redis_6_x
Configurar Secret Manager
# Crear y almacenar variables de entorno
cat << EOF | gcloud secrets create casebender-env --data-file=-
AUTH_SECRET=su-secreto-de-autenticacion
AUTH_SALT=su-sal-de-autenticacion
POSTGRES_PRISMA_URL="postgresql://casebender:SU_CONTRASEÑA_SEGURA@/casebender?host=/cloudsql/SU_ID_DE_PROYECTO:us-central1:casebender-db"
REDIS_URL="redis://DIRECCIÓN_IP_REDIS:6379"
GOOGLE_STORAGE_BUCKET=casebender-storage
EOF
# Crear repositorio de Artifact Registry
gcloud artifacts repositories create casebender \
--repository-format=docker \
--location=us-central1
# Configurar Docker para Artifact Registry
gcloud auth configure-docker us-central1-docker.pkg.dev
# Extraer imágenes de CaseBender
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest
# Etiquetar imágenes para 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
# Subir imágenes
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
Paso 4: Implementar Servicios
Implementar Aplicación Principal
# Implementar en 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"
Implementar Procesador de Flujo de Trabajo
# Implementar procesador de flujo de trabajo
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"
Implementar Procesador MISP
# Implementar procesador 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"
Paso 5: Configurar Dominio y SSL
Mapear Dominio Personalizado
# Añadir mapeo de dominio
gcloud run domain-mappings create \
--service casebender \
--domain su-dominio.com \
--region us-central1
Siga los pasos de verificación de DNS en la Consola de Google Cloud para completar el mapeo de dominio.
Monitoreo y Mantenimiento
Configurar Monitoreo
# Habilitar Cloud Monitoring
gcloud services enable monitoring.googleapis.com
# Configurar alertas para Cloud Run
gcloud alpha monitoring policies create \
--policy-from-file=monitoring-policy.json
Configurar Registros
# Ver registros de la aplicación
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=casebender" --limit=10
Solución de Problemas
Problemas Comunes
-
Errores de Conexión a Base de Datos:
- Verifique que la instancia de Cloud SQL esté en ejecución
- Confirme que las credenciales sean correctas
- Asegúrese de que la conexión de Cloud SQL esté configurada correctamente
-
Problemas de Permisos:
- Verifique que la cuenta de servicio tenga los permisos adecuados
- Confirme que los secretos estén accesibles para el servicio
-
Errores de Implementación:
- Revise los registros de implementación para mensajes de error
- Verifique que las imágenes Docker estén correctamente etiquetadas y subidas
Siguientes Pasos
- Configure monitoreo y alertas adicionales
- Implemente un pipeline de CI/CD para actualizaciones automáticas
- Configure respaldos programados para la base de datos
- Establezca políticas de escalado para manejar cargas variables