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

# Implantar no Google Cloud Run

> Implante o CaseBender no Google Cloud Run com instruções passo a passo

## Visão Geral

Este guia orienta você na implantação do CaseBender no Google Cloud Run usando nossas imagens Docker pré-construídas.

## Pré-requisitos

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

## Passo 1: Configuração Inicial

### Instalar Google Cloud CLI

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

  # Login no Google Cloud

  gcloud auth login

  # Configurar Docker para usar o Google Cloud

  gcloud auth configure-docker

  ```

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

  # Extrair o arquivo
  tar -xf google-cloud-cli-VERSION-linux-x86_64.tar.gz

  # Executar o script de instalação
  ./google-cloud-sdk/install.sh

  # Login no Google Cloud
  gcloud auth login

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

  ```powershell Windows theme={null}
  # Baixar e executar o instalador
  # https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe

  # Login no Google Cloud
  gcloud auth login

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

### Inicializar Projeto

```bash theme={null}
# Definir seu ID de projeto
gcloud config set project SEU_ID_DE_PROJETO

# Habilitar APIs necessárias
gcloud services enable \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  secretmanager.googleapis.com \
  cloudresourcemanager.googleapis.com \
  artifactregistry.googleapis.com
```

## Passo 2: Configurar Infraestrutura na Nuvem

### Criar Bucket do Cloud Storage

```bash theme={null}
# Criar bucket de armazenamento
gsutil mb -l us-central1 gs://casebender-storage

# Criar conta de serviço para armazenamento
gcloud iam service-accounts create casebender-storage \
  --display-name "Conta de Serviço de Armazenamento CaseBender"

# Obter o email da conta de serviço
STORAGE_SA_EMAIL=$(gcloud iam service-accounts list \
  --filter="displayName:Conta de Serviço de Armazenamento CaseBender" \
  --format="value(email)")

# Conceder permissões
gsutil iam ch \
  serviceAccount:$STORAGE_SA_EMAIL:objectViewer,objectCreator \
  gs://casebender-storage

# Criar e baixar chave da conta de serviço
gcloud iam service-accounts keys create storage-key.json \
  --iam-account=$STORAGE_SA_EMAIL

# Criar segredo para credenciais de armazenamento
gcloud secrets create casebender-storage-key \
  --replication-policy="automatic"

# Importar a chave da conta de serviço como um segredo
gcloud secrets versions add casebender-storage-key \
  --data-file=storage-key.json
```

### Configurar Cloud SQL (PostgreSQL)

```bash theme={null}
# Criar instância PostgreSQL
gcloud sql instances create casebender-db \
  --database-version=POSTGRES_14 \
  --cpu=2 \
  --memory=4GB \
  --region=us-central1 \
  --root-password="SUA_SENHA_SEGURA"

# Criar banco de dados
gcloud sql databases create casebender \
  --instance=casebender-db

# Criar usuário
gcloud sql users create casebender \
  --instance=casebender-db \
  --password="SUA_SENHA_SEGURA"
```

### Configurar Memorystore (Redis)

```bash theme={null}
# Criar instância Redis
gcloud redis instances create casebender-redis \
  --size=2 \
  --region=us-central1 \
  --redis-version=redis_6_x
```

### Configurar Secret Manager

```bash theme={null}
# Criar e armazenar variáveis de ambiente
cat << EOF | gcloud secrets create casebender-env --data-file=-
AUTH_SECRET=seu-segredo-de-autenticação
AUTH_SALT=seu-salt-de-autenticação
POSTGRES_PRISMA_URL="postgresql://casebender:SUA_SENHA_SEGURA@/casebender?host=/cloudsql/SEU_ID_DE_PROJETO:us-central1:casebender-db"
REDIS_URL="redis://ENDERECO_IP_REDIS:6379"
GOOGLE_STORAGE_BUCKET=casebender-storage
EOF
```

## Passo 3: Baixar e Enviar Imagens Docker

```bash theme={null}
# Criar repositório do 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

# Baixar imagens do CaseBender
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest

# Marcar imagens para o 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

# Enviar imagens
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: Implantar Serviços

### Implantar Aplicação Principal

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

### Implantar Processador de Fluxo de Trabalho

```bash theme={null}
# Implantar processador de fluxo de trabalho
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"
```

### Implantar Processador MISP

```bash theme={null}
# Implantar processador 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: Configurar Domínio e SSL

### Mapear Domínio Personalizado

```bash theme={null}
# Adicionar mapeamento de domínio
gcloud run domain-mappings create \
  --service casebender \
  --domain seu-dominio.com \
  --region us-central1
```

Siga as etapas de verificação de DNS no Console do Google Cloud para completar o mapeamento de domínio.

## Monitoramento e Manutenção

### Configurar Monitoramento

1. Navegue até o Cloud Monitoring no Console do Google Cloud
2. Crie uma verificação de tempo de atividade para seu serviço
3. Configure alertas para:
   * Taxas de erro
   * Latência
   * Contagem de instâncias
   * Uso de memória

### Visualizar Logs

```bash theme={null}
# Visualizar logs de serviço
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=casebender" --limit 50

# Transmitir logs
gcloud logging tail "resource.type=cloud_run_revision AND resource.labels.service_name=casebender"
```

### Atualizar Aplicação

Para implantar atualizações:

```bash theme={null}
# Construir e implantar nova versão
gcloud builds submit --config cloudbuild.yaml

# Reverter se necessário
gcloud run services rollback casebender \
  --to-revision=ID_DA_REVISAO \
  --region=us-central1
```

## Otimização de Custos

1. **Configuração de Auto-escalonamento**

   ```bash theme={null}
   gcloud run services update casebender \
     --min-instances=1 \
     --max-instances=10 \
     --region=us-central1
   ```

2. **Alocação de Recursos**
   ```bash theme={null}
   gcloud run services update casebender \
     --memory=1Gi \
     --cpu=1 \
     --region=us-central1
   ```

## Solução de Problemas

### Problemas Comuns

1. **Problemas de Conexão**

   * Verificar conexão com Cloud SQL
   * Verificar conectividade com Redis
   * Validar variáveis de ambiente

2. **Problemas de Desempenho**

   * Revisar métricas de instância
   * Verificar alocação de recursos
   * Analisar padrões de solicitação

3. **Falhas de Implantação**
   * Verificar logs de compilação
   * Verificar permissões da conta de serviço
   * Revisar configuração de implantação

## Próximos Passos

* Configurar pipelines de CI/CD
* Configurar estratégias de backup
* Implementar monitoramento e alertas
* Revisar melhores práticas de segurança
