> ## Documentation Index
> Fetch the complete documentation index at: https://docs.casebender.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Implementar en Google Cloud Run

> Implemente CaseBender en Google Cloud Run con instrucciones paso a paso

## 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

1. [Cuenta de Google Cloud](https://cloud.google.com/)
2. [CLI de Google Cloud](https://cloud.google.com/sdk/docs/install) instalado
3. [Docker](https://docs.docker.com/get-docker/) instalado

## Paso 1: Configuración Inicial

### Instalar CLI de Google Cloud

<CodeGroup>
  ```bash macOS theme={null}
  # Usando Homebrew
  brew install google-cloud-sdk

  # Iniciar sesión en Google Cloud

  gcloud auth login

  # Configurar Docker para usar Google Cloud

  gcloud auth configure-docker

  ```

  ```bash Linux theme={null}
  # Descargar el archivo
  curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-VERSION-linux-x86_64.tar.gz

  # Extraer el archivo
  tar -xf google-cloud-cli-VERSION-linux-x86_64.tar.gz

  # Ejecutar el script de instalación
  ./google-cloud-sdk/install.sh

  # Iniciar sesión en Google Cloud
  gcloud auth login

  # Configurar Docker para usar Google Cloud
  gcloud auth configure-docker
  ```

  ```powershell Windows theme={null}
  # Descargar y ejecutar el instalador
  # https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe

  # Iniciar sesión en Google Cloud
  gcloud auth login

  # Configurar Docker para usar Google Cloud
  gcloud auth configure-docker
  ```
</CodeGroup>

### Inicializar Proyecto

```bash theme={null}
# 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

```bash theme={null}
# 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)

```bash theme={null}
# 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)

```bash theme={null}
# Crear instancia Redis
gcloud redis instances create casebender-redis \
  --size=2 \
  --region=us-central1 \
  --redis-version=redis_6_x
```

### Configurar Secret Manager

```bash theme={null}
# 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
```

## Paso 3: Extraer y Subir Imágenes Docker

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```bash theme={null}
# 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

1. **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

2. **Problemas de Permisos**:

   * Verifique que la cuenta de servicio tenga los permisos adecuados
   * Confirme que los secretos estén accesibles para el servicio

3. **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

1. Configure monitoreo y alertas adicionales
2. Implemente un pipeline de CI/CD para actualizaciones automáticas
3. Configure respaldos programados para la base de datos
4. Establezca políticas de escalado para manejar cargas variables
