♻️ chore: remove artefatos legados de deploy no Google Cloud e limpa documentacao de infraestrutura antiga
- remove arquivos nao utilizados no modelo atual de hospedagem: app.yaml, cloudbuild.yaml, deploy.sh, setup-gcp.sh, setup-database.sh e .gcloudignore - remove documentacoes antigas de infraestrutura GCP/Cloud SQL (GUIA_COMPLETO_CONFIGURE_E_DEPLOY.md e CLOUD_SQL_PROXY.md) - atualiza README para refletir o fluxo vigente em servidor da empresa, removendo referencias a Cloud Run/Cloud Build - limpa .env.example removendo blocos de configuracao legados de Cloud SQL/Cloud Run - ajusta comentario legado em app/core/settings.py, mantendo compatibilidade sem vincular a Cloud Run - preserva configuracoes e orientacoes relacionadas ao Vertex AImain
parent
63040d472c
commit
f818258fec
@ -1,19 +0,0 @@
|
||||
.git
|
||||
.gitignore
|
||||
venv/
|
||||
.venv/
|
||||
env/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.egg-info/
|
||||
.pytest_cache/
|
||||
.coverage
|
||||
htmlcov/
|
||||
.DS_Store
|
||||
*.log
|
||||
.vscode/
|
||||
.idea/
|
||||
.env
|
||||
node_modules/
|
||||
|
||||
@ -1,56 +0,0 @@
|
||||
# Configuração para Cloud SQL Proxy (Optional)
|
||||
|
||||
Para usar Cloud SQL em vez de PostgreSQL local:
|
||||
|
||||
## 1. Instale o Cloud SQL Proxy
|
||||
|
||||
```bash
|
||||
sudo curl https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -o cloud_sql_proxy
|
||||
sudo chmod +x cloud_sql_proxy
|
||||
```
|
||||
|
||||
## 2. Crie uma Service Account
|
||||
|
||||
```bash
|
||||
# No Cloud Console ou via gcloud
|
||||
gcloud iam service-accounts create cloudsql-proxy \
|
||||
--display-name="Cloud SQL Proxy"
|
||||
|
||||
# Dê permissões
|
||||
gcloud projects add-iam-policy-binding PROJECT_ID \
|
||||
--member="serviceAccount:cloudsql-proxy@PROJECT_ID.iam.gserviceaccount.com" \
|
||||
--role="roles/cloudsql.client"
|
||||
```
|
||||
|
||||
## 3. Configure Variáveis de Ambiente
|
||||
|
||||
```env
|
||||
# Opção A: Unix Socket (recomendado)
|
||||
DB_HOST=/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME
|
||||
|
||||
# Opção B: TCP
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5432
|
||||
```
|
||||
|
||||
## 4. Inicie o Proxy
|
||||
|
||||
```bash
|
||||
./cloud_sql_proxy -instances=PROJECT_ID:REGION:INSTANCE_NAME=tcp:5432 \
|
||||
-credential_file=/path/to/service-account-key.json
|
||||
```
|
||||
|
||||
## 5. No Cloud Run
|
||||
|
||||
A variável DATABASE_URL deve ser:
|
||||
|
||||
```
|
||||
postgresql://user:password@/cloudsql/PROJECT_ID:REGION:INSTANCE_NAME/database
|
||||
```
|
||||
|
||||
O Cloud Run injeta automaticamente a credencial da service account do projeto.
|
||||
|
||||
## Referência
|
||||
|
||||
- [Cloud SQL Proxy Docs](https://cloud.google.com/sql/docs/postgres/cloud-sql-proxy)
|
||||
- [Cloud SQL Python Connector](https://github.com/GoogleCloudPlatform/cloud-sql-python-connector)
|
||||
@ -1,765 +0,0 @@
|
||||
# 🚀 Guia Completo: Configure e Faça Deploy do Orquestrador
|
||||
|
||||
**Tempo total: ~30 minutos**
|
||||
|
||||
Este guia leva você desde a configuração no Google Cloud Console até o deploy da aplicação online.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Índice
|
||||
|
||||
1. [Pré-requisitos](#pré-requisitos)
|
||||
2. [FASE 1: Google Cloud Console](#fase-1-google-cloud-console)
|
||||
3. [FASE 2: Configurar Ambiente Local](#fase-2-configurar-ambiente-local)
|
||||
4. [FASE 3: Testar Localmente](#fase-3-testar-localmente-opcional)
|
||||
5. [FASE 4: Deploy no Cloud Run](#fase-4-deploy-no-cloud-run)
|
||||
6. [FASE 5: Verificar e Testar](#fase-5-verificar-e-testar)
|
||||
7. [Troubleshooting](#troubleshooting)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Pré-requisitos
|
||||
|
||||
Antes de começar, você já deve ter:
|
||||
|
||||
- [ ] Google Cloud SDK instalado no seu PC
|
||||
- Windows: https://cloud.google.com/sdk/docs/install-windows
|
||||
- Verificar: Abra terminal e digite `gcloud --version`
|
||||
|
||||
- [ ] Acesso a um projeto GCP fornecido pela sua empresa
|
||||
- [ ] Docker instalado (para testar localmente - opcional)
|
||||
- Download: https://www.docker.com/products/docker-desktop
|
||||
|
||||
- [ ] Git instalado no seu PC
|
||||
- [ ] Python 3.11+ instalado
|
||||
|
||||
**Se não tiver algum, instale antes de continuar!**
|
||||
|
||||
---
|
||||
|
||||
# FASE 1: Google Cloud Console
|
||||
|
||||
**⏱️ Tempo: ~10 minutos**
|
||||
|
||||
Você vai configurar todos os recursos no Google Cloud Console. Siga cada passo na ordem.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 1: Identificar Seu Projeto
|
||||
|
||||
1. Acesse: https://console.cloud.google.com/
|
||||
2. No topo esquerdo, clique no **seletor de projeto**
|
||||
3. Selecione o projeto fornecido pela sua empresa
|
||||
4. **Copie e anote o Project ID** que aparece no topo
|
||||
```
|
||||
Seu Project ID: _________________________________
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASSO 2: Ativar APIs Necessárias
|
||||
|
||||
**Local:** Menu ☰ → "APIs e Serviços" → "APIs e serviços ativados"
|
||||
|
||||
Você vai ativar 6 APIs. Para cada uma:
|
||||
|
||||
1. Clique **"Ativar APIs e Serviços"** (botão azul no topo)
|
||||
2. Digite o nome da API na caixa de busca
|
||||
3. Clique na API
|
||||
4. Clique **"Ativar"**
|
||||
5. Aguarde ~1-2 minutos
|
||||
6. Volte e repita para a próxima
|
||||
|
||||
### APIs para Ativar:
|
||||
|
||||
- [ ] **Cloud Run API**
|
||||
- [ ] **Cloud Build API**
|
||||
- [ ] **Cloud SQL Admin API**
|
||||
- [ ] **Artifact Registry API** ⚠️ (busque em inglês)
|
||||
- [ ] **Vertex AI API** (para usar LLM/Gemini)
|
||||
- [ ] **Compute Engine API**
|
||||
|
||||
**✅ Confirmação:** Você deve ver todas as 6 APIs listadas em "APIs e serviços ativados"
|
||||
|
||||
---
|
||||
|
||||
## PASSO 3: Criar Cloud SQL (Banco de Dados PostgreSQL)
|
||||
|
||||
Seu banco de dados onde a aplicação vai armazenar dados.
|
||||
|
||||
### 3.1 - Acessar Cloud SQL
|
||||
|
||||
Menu ☰ → **"SQL"** (dentro de "Bancos de Dados")
|
||||
|
||||
### 3.2 - Criar Nova Instância
|
||||
|
||||
1. Clique **"Criar instância"**
|
||||
2. Selecione **"PostgreSQL"**
|
||||
|
||||
### 3.3 - Configurar Instância
|
||||
|
||||
Preencha com os seguintes valores:
|
||||
|
||||
- **ID da instância**: `orquestrador-db`
|
||||
- **Senha da instância**: Escolha uma senha **SEGURA** (ex: `Abc@123xyz!`)
|
||||
- ⚠️ **Copie e guarde em local seguro!**
|
||||
- Senha raiz: `_________________________________`
|
||||
|
||||
- **Versão do PostgreSQL**: `16` (ou `15`)
|
||||
- **Região**: `us-central1` (mesmo de Cloud Run depois)
|
||||
- **Disponibilidade zonal**: `Zona única` (está ok para começar)
|
||||
|
||||
### 3.4 - Configurar Conectividade
|
||||
|
||||
Na seção **"Conectividade"**:
|
||||
|
||||
1. Clique para expandir **"Conectividade"**
|
||||
2. Marque ✓ **"IP público"**
|
||||
3. Na seção **"Conexões autorizadas de redes"**, clique **"Criar rede"**
|
||||
- Nome: `cloudsql-network` (ou deixe padrão)
|
||||
- Clique **"Criar e voltar"**
|
||||
|
||||
⚠️ **Importante:** Isso permite que Cloud Run se conecte ao banco de dados.
|
||||
|
||||
### 3.5 - Criar Instância
|
||||
|
||||
1. Clique **"Criar"** (botão azul no final)
|
||||
2. Aguarde **5-10 minutos** (status mudará de "criando..." para verde ✓)
|
||||
|
||||
---
|
||||
|
||||
## PASSO 4: Configurar Cloud SQL - Usuários e Banco de Dados
|
||||
|
||||
Quando a instância estiver **verde/pronta**:
|
||||
|
||||
### 4.1 - Obter Dados de Conexão
|
||||
|
||||
1. Clique no nome `orquestrador-db`
|
||||
2. Copie o **Nome da conexão** (aparece parte superior):
|
||||
- Formato: `seu-projeto-id:us-central1:orquestrador-db`
|
||||
- Copie: `_________________________________`
|
||||
|
||||
3. Na aba **"Visão geral"**, encontre **"IP público"** na seção **"Conectividade"**
|
||||
- Copie: `_________________________________`
|
||||
|
||||
### 4.2 - Criar Usuário do Banco
|
||||
|
||||
Na aba **"Usuários e bancos de dados"**:
|
||||
|
||||
1. Clique **"Criar usuário"**
|
||||
2. Preencha:
|
||||
- **Nome do usuário**: `orquestrador`
|
||||
- **Senha**: Escolha uma senha (ex: `Orm@2026!`)
|
||||
- ⚠️ **Copie e guarde!**
|
||||
- Senha do usuário orquestrador: `_________________________________`
|
||||
|
||||
3. Clique **"Criar"**
|
||||
|
||||
### 4.3 - Criar Banco de Dados
|
||||
|
||||
Na aba **"Usuários e bancos de dados"**, clique em **"Bancos de dados"**:
|
||||
|
||||
1. Clique **"Criar banco de dados"**
|
||||
2. Preencha:
|
||||
- **Nome do banco de dados**: `orquestrador_db`
|
||||
- **Conjunto de caracteres**: `utf8mb4`
|
||||
3. Clique **"Criar"**
|
||||
|
||||
---
|
||||
|
||||
## PASSO 5: Criar Conta de Serviço (Service Account)
|
||||
|
||||
Isso permite que Cloud Run se autentique no GCP.
|
||||
|
||||
### 5.1 - Ir para Credenciais
|
||||
|
||||
Menu ☰ → **"APIs e Serviços"** → **"Credenciais"**
|
||||
|
||||
### 5.2 - Criar Conta de Serviço
|
||||
|
||||
1. Clique **"Criar credenciais"** → **"Conta de serviço"**
|
||||
2. Preencha:
|
||||
- **Nome da conta de serviço**: `orquestrador-app`
|
||||
- **ID da conta de serviço**: `orquestrador-app` (preenchido automaticamente)
|
||||
3. Clique **"Criar e continuar"**
|
||||
|
||||
### 5.3 - Atribuir Permissões
|
||||
|
||||
Na tela de permissões:
|
||||
|
||||
1. Clique **"Selecionar uma função"**
|
||||
2. Procure e selecione cada uma das funções abaixo. **Adicione todas**:
|
||||
- `Cliente do Cloud SQL`
|
||||
- `Desenvolvedor do Cloud Run`
|
||||
- `Gravador do Registro de Artefatos`
|
||||
|
||||
3. Clique **"Continuar"**
|
||||
4. Clique **"Concluído"**
|
||||
|
||||
### 5.4 - Gerar Chave JSON
|
||||
|
||||
1. Volte para **"Credenciais"**
|
||||
2. Clique na conta de serviço `orquestrador-app` (em "Contas de serviço")
|
||||
3. Vá para a aba **"Chaves"**
|
||||
4. Clique **"Adicionar chave"** → **"Criar nova chave"**
|
||||
5. Selecione **"JSON"**
|
||||
6. Clique **"Criar"**
|
||||
|
||||
⚠️ **Um arquivo JSON será baixado automaticamente!**
|
||||
|
||||
- Salve em: `D:\vitor\Pessoal\PJ\Orquestrador\service-account-key.json`
|
||||
- **Não compartilhe este arquivo com ninguém!**
|
||||
|
||||
---
|
||||
|
||||
## PASSO 6: Criar Registro de Artefatos (Container Registry)
|
||||
|
||||
Repository para armazenar suas imagens Docker.
|
||||
|
||||
### 6.1 - Acessar Registro
|
||||
|
||||
Menu ☰ → **"Registro de Artefatos"** → **"Repositórios"**
|
||||
|
||||
### 6.2 - Criar Repositório
|
||||
|
||||
1. Clique **"Criar repositório"**
|
||||
2. Preencha:
|
||||
- **Nome**: `orquestrador`
|
||||
- **Formato**: `Docker`
|
||||
- **Localização**: `us-central1` (mesmo do Cloud SQL)
|
||||
3. Clique **"Criar"**
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist - Fase 1 Concluída
|
||||
|
||||
Você deve ter anotado:
|
||||
|
||||
- [ ] Project ID: `_________________________________`
|
||||
- [ ] Cloud SQL Connection Name: `_________________________________`
|
||||
- [ ] Cloud SQL Public IP: `_________________________________`
|
||||
- [ ] Cloud SQL User: `orquestrador`
|
||||
- [ ] Cloud SQL Password: `_________________________________`
|
||||
- [ ] Cloud SQL Root Password: `_________________________________`
|
||||
- [ ] Cloud SQL Database: `orquestrador_db`
|
||||
- [ ] Service Account JSON file baixado e salvo
|
||||
- [ ] 6 APIs ativadas
|
||||
- [ ] Registro de Artefatos criado
|
||||
|
||||
**Próximo: Fase 2 - Configurar Ambiente Local**
|
||||
|
||||
---
|
||||
|
||||
# FASE 2: Configurar Ambiente Local
|
||||
|
||||
**⏱️ Tempo: ~5 minutos**
|
||||
|
||||
Agora você vai configurar seu PC para comunicar com o GCP.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 1: Autenticar com Google Cloud SDK
|
||||
|
||||
Abra **PowerShell** e execute:
|
||||
|
||||
```powershell
|
||||
# Fazer login no Google Cloud
|
||||
gcloud auth login
|
||||
|
||||
# Definir projeto padrão
|
||||
gcloud config set project SEU-PROJECT-ID
|
||||
|
||||
# Exemplo:
|
||||
gcloud config set project orquestrador-mvp-12345
|
||||
```
|
||||
|
||||
Siga as instruções no navegador que abrir.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 2: Configurar Autenticação de Conta de Serviço
|
||||
|
||||
Ainda no **PowerShell**:
|
||||
|
||||
```powershell
|
||||
# Definir variável de ambiente para usar a conta de serviço
|
||||
$env:GOOGLE_APPLICATION_CREDENTIALS = "D:\vitor\Pessoal\PJ\Orquestrador\service-account-key.json"
|
||||
|
||||
# Verificar que funcionou
|
||||
gcloud auth list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASSO 3: Criar Arquivo `.env`
|
||||
|
||||
Este arquivo contém suas credenciais e configurações.
|
||||
|
||||
### 3.1 - Criar o Arquivo
|
||||
|
||||
Na raiz do projeto (`D:\vitor\Pessoal\PJ\Orquestrador\`), crie um arquivo chamado `.env` com:
|
||||
|
||||
```env
|
||||
# ============================================
|
||||
# CONFIGURAÇÕES DO GOOGLE CLOUD
|
||||
# ============================================
|
||||
|
||||
PROJECT_ID=SEU-PROJECT-ID
|
||||
GCP_REGION=us-central1
|
||||
|
||||
# ============================================
|
||||
# CONFIGURAÇÕES DO BANCO DE DADOS
|
||||
# ============================================
|
||||
|
||||
# URL de conexão direta (para testes locais)
|
||||
DATABASE_URL=postgresql://orquestrador:SUA_SENHA@SEU_IP_PUBLICO:5432/orquestrador_db
|
||||
|
||||
# Nome da conexão Cloud SQL (para Cloud Run)
|
||||
CLOUD_SQL_CONNECTION_NAME=seu-projeto:us-central1:orquestrador-db
|
||||
|
||||
# ============================================
|
||||
# CONFIGURAÇÕES DE API
|
||||
# ============================================
|
||||
|
||||
# Se usar Generative AI (Gemini)
|
||||
# GOOGLE_API_KEY=sua-chave-api-aqui
|
||||
|
||||
# Se usar Mockaroo (dados fictícios)
|
||||
# MOCKAROO_API_KEY=sua-chave-mockaroo-aqui
|
||||
|
||||
# ============================================
|
||||
# OUTRAS CONFIGURAÇÕES
|
||||
# ============================================
|
||||
|
||||
ENVIRONMENT=development
|
||||
DEBUG=true
|
||||
```
|
||||
|
||||
### 3.2 - Preencher com Seus Dados
|
||||
|
||||
Substitua os valores acima com:
|
||||
|
||||
- `SEU-PROJECT-ID` → seu Project ID do GCP
|
||||
- `SUA_SENHA` → senha do usuário `orquestrador` no Cloud SQL
|
||||
- `SEU_IP_PUBLICO` → IP público do Cloud SQL
|
||||
|
||||
**Exemplo completo:**
|
||||
|
||||
```env
|
||||
PROJECT_ID=orquestrador-mvp-12345
|
||||
GCP_REGION=us-central1
|
||||
DATABASE_URL=postgresql://orquestrador:Orm@2026!@35.192.120.50:5432/orquestrador_db
|
||||
CLOUD_SQL_CONNECTION_NAME=orquestrador-mvp-12345:us-central1:orquestrador-db
|
||||
ENVIRONMENT=development
|
||||
DEBUG=true
|
||||
```
|
||||
|
||||
⚠️ **IMPORTANTE:** Nunca compartilhe este arquivo `.env`! Ele contém suas senhas!
|
||||
|
||||
---
|
||||
|
||||
## PASSO 4: Instalar Dependências Python
|
||||
|
||||
Abra **PowerShell** na pasta do projeto:
|
||||
|
||||
```powershell
|
||||
# Ativar ambiente virtual (já deve estar ativo)
|
||||
# & .\venv\Scripts\Activate.ps1
|
||||
|
||||
# Instalar dependências
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Verificar que funcionou
|
||||
pip list | Select-String "fastapi|psycopg2"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist - Fase 2 Concluída
|
||||
|
||||
- [ ] Autenticado no Google Cloud (`gcloud auth list` mostra sua conta)
|
||||
- [ ] Project ID configurado como padrão
|
||||
- [ ] Arquivo `.env` criado e preenchido
|
||||
- [ ] `GOOGLE_APPLICATION_CREDENTIALS` configurado
|
||||
- [ ] Dependências instaladas
|
||||
|
||||
**Próximo: Fase 3 - Testar Localmente (opcional)**
|
||||
|
||||
---
|
||||
|
||||
# FASE 3: Testar Localmente (Opcional)
|
||||
|
||||
**⏱️ Tempo: ~5 minutos**
|
||||
|
||||
Teste a aplicação no seu PC antes de fazer deploy.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 1: Testar Conexão com Banco de Dados
|
||||
|
||||
```powershell
|
||||
# Instalar psql (client PostgreSQL) se não tiver
|
||||
# Windows: https://www.postgresql.org/download/windows/
|
||||
|
||||
# Testar conexão
|
||||
psql -h SEU_IP_PUBLICO -U orquestrador -d orquestrador_db -c "SELECT 1"
|
||||
|
||||
# Exemplo:
|
||||
psql -h 35.192.120.50 -U orquestrador -d orquestrador_db -c "SELECT 1"
|
||||
```
|
||||
|
||||
Se aparecer `1`, conectou com sucesso! ✅
|
||||
|
||||
---
|
||||
|
||||
## PASSO 2: Rodar a Aplicação Localmente
|
||||
|
||||
```powershell
|
||||
# Ir para a pasta do projeto
|
||||
cd D:\vitor\Pessoal\PJ\Orquestrador
|
||||
|
||||
# Rodar a aplicação FastAPI
|
||||
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||||
```
|
||||
|
||||
Seu terminal mostrará:
|
||||
|
||||
```
|
||||
INFO: Uvicorn running on http://127.0.0.1:8000
|
||||
```
|
||||
|
||||
Deixe rodar!
|
||||
|
||||
---
|
||||
|
||||
## PASSO 3: Testar Endpoints
|
||||
|
||||
Abra outro **PowerShell** (enquanto a aplicação está rodando):
|
||||
|
||||
```powershell
|
||||
# Testar endpoint de saúde
|
||||
curl -X GET "http://localhost:8000/docs"
|
||||
|
||||
# Ou abra no navegador: http://localhost:8000/docs
|
||||
```
|
||||
|
||||
Você verá a **Swagger UI** (interface visual da API).
|
||||
|
||||
---
|
||||
|
||||
## PASSO 4: Testar Chat Endpoint
|
||||
|
||||
```powershell
|
||||
# Fazer uma requisição POST
|
||||
curl -X POST "http://localhost:8000/chat" `
|
||||
-H "Content-Type: application/json" `
|
||||
-d @'{
|
||||
"message": "Quero um carro até 50000 reais",
|
||||
"user_id": "test"
|
||||
}'
|
||||
```
|
||||
|
||||
Se receber resposta → Aplicação está funcionando! ✅
|
||||
|
||||
---
|
||||
|
||||
## PASSO 5: Parar a Aplicação
|
||||
|
||||
No PowerShell onde a aplicação está rodando:
|
||||
|
||||
```powershell
|
||||
# Pressione: Ctrl + C
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist - Fase 3 Concluída
|
||||
|
||||
- [ ] Conectou ao banco de dados com sucesso
|
||||
- [ ] Aplicação rodou localmente
|
||||
- [ ] Swagger UI acessível em http://localhost:8000/docs
|
||||
- [ ] Endpoint de chat respondeu
|
||||
|
||||
**Próximo: Fase 4 - Deploy no Cloud Run**
|
||||
|
||||
---
|
||||
|
||||
# FASE 4: Deploy no Cloud Run
|
||||
|
||||
**⏱️ Tempo: ~10 minutos**
|
||||
|
||||
Colocar sua aplicação online no Google Cloud!
|
||||
|
||||
---
|
||||
|
||||
## PASSO 1: Usar o Script de Deploy
|
||||
|
||||
Na raiz do projeto, existe um script `deploy.sh` que faz tudo automaticamente.
|
||||
|
||||
### Para Windows (PowerShell):
|
||||
|
||||
```powershell
|
||||
# Ir para a pasta do projeto
|
||||
cd D:\vitor\Pessoal\PJ\Orquestrador
|
||||
|
||||
# Executar deploy
|
||||
bash deploy.sh SEU-PROJECT-ID us-central1
|
||||
|
||||
# Exemplo:
|
||||
bash deploy.sh orquestrador-mvp-12345 us-central1
|
||||
```
|
||||
|
||||
### O que este script faz:
|
||||
|
||||
1. Faz build da imagem Docker
|
||||
2. Envia a imagem para o Registro de Artefatos
|
||||
3. Deploy automático no Cloud Run
|
||||
4. Configura variáveis de ambiente
|
||||
5. Libera acesso público
|
||||
|
||||
**Aguarde ~5-10 minutos** enquanto o script roda.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 2: Monitorar o Deploy
|
||||
|
||||
Você verá logs na tela mostrando o progresso:
|
||||
|
||||
```
|
||||
Building Docker image...
|
||||
Building image gcr.io/seu-projeto/orquestrador:latest
|
||||
...
|
||||
Pushing image to Container Registry...
|
||||
...
|
||||
Deploying to Cloud Run...
|
||||
...
|
||||
Deployment completed!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASSO 3: Obter URL de Acesso
|
||||
|
||||
Quando o deploy terminar, execute:
|
||||
|
||||
```powershell
|
||||
# Obter URL do Cloud Run
|
||||
gcloud run services describe orquestrador `
|
||||
--region=us-central1 `
|
||||
--format='value(status.url)'
|
||||
```
|
||||
|
||||
Você verá algo como:
|
||||
|
||||
```
|
||||
https://orquestrador-xxxxx.a.run.app
|
||||
```
|
||||
|
||||
**Copie esta URL!** Você usará para acessar a aplicação.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist - Fase 4 Concluída
|
||||
|
||||
- [ ] Deploy script executado sem erros
|
||||
- [ ] Imagem Docker criada
|
||||
- [ ] Imagem enviada para Registro de Artefatos
|
||||
- [ ] Serviço Cloud Run criado
|
||||
- [ ] URL de acesso obtida
|
||||
- [ ] URL de acesso: `_________________________________`
|
||||
|
||||
**Próximo: Fase 5 - Verificar e Testar**
|
||||
|
||||
---
|
||||
|
||||
# FASE 5: Verificar e Testar
|
||||
|
||||
**⏱️ Tempo: ~3 minutos**
|
||||
|
||||
Validar que tudo está funcionando online.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 1: Testar Swagger UI Online
|
||||
|
||||
No navegador, acesse:
|
||||
|
||||
```
|
||||
https://SUA-URL-DO-CLOUD-RUN/docs
|
||||
```
|
||||
|
||||
Exemplo:
|
||||
|
||||
```
|
||||
https://orquestrador-xxxxx.a.run.app/docs
|
||||
```
|
||||
|
||||
Você deve ver a interface Swagger UI com todos os endpoints.
|
||||
|
||||
---
|
||||
|
||||
## PASSO 2: Testar Chat Endpoint
|
||||
|
||||
Na Swagger UI:
|
||||
|
||||
1. Clique em **POST /chat**
|
||||
2. Clique **"Try it out"**
|
||||
3. No campo **"Request body"**, preencha:
|
||||
```json
|
||||
{
|
||||
"message": "Quero um carro até 50000 reais",
|
||||
"user_id": "test"
|
||||
}
|
||||
```
|
||||
4. Clique **"Execute"**
|
||||
|
||||
Você deve receber uma resposta do LLM integrado! ✅
|
||||
|
||||
---
|
||||
|
||||
## PASSO 3: Testar via Curl (Terminal)
|
||||
|
||||
```powershell
|
||||
# Substituir pela sua URL
|
||||
$URL = "https://orquestrador-xxxxx.a.run.app"
|
||||
|
||||
curl -X POST "$URL/chat" `
|
||||
-H "Content-Type: application/json" `
|
||||
-d @'{
|
||||
"message": "Quero um carro até 50000 reais",
|
||||
"user_id": "test"
|
||||
}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PASSO 4: Ver Logs
|
||||
|
||||
Para debugar se algo não funcionar:
|
||||
|
||||
```powershell
|
||||
# Ver últimos 50 logs
|
||||
gcloud run logs read orquestrador --region=us-central1 --limit=50
|
||||
|
||||
# Ver logs em tempo real (streaming)
|
||||
gcloud run logs read orquestrador --region=us-central1 --follow
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist - Fase 5 Concluída
|
||||
|
||||
- [ ] Swagger UI acessível online
|
||||
- [ ] Chat endpoint respondeu
|
||||
- [ ] Curl funcionou
|
||||
- [ ] Aplicação está ONLINE! 🎉
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Sucesso!
|
||||
|
||||
Sua aplicação está **online e funcionando**!
|
||||
|
||||
### Resumo do que você fez:
|
||||
|
||||
1. ✅ Ativou 6 APIs no Google Cloud
|
||||
2. ✅ Criou Cloud SQL PostgreSQL com usuário e banco
|
||||
3. ✅ Criou Service Account com permissões
|
||||
4. ✅ Criou Registro de Artefatos
|
||||
5. ✅ Configurou arquivo `.env` localmente
|
||||
6. ✅ Testou localmente
|
||||
7. ✅ Fez deploy no Cloud Run
|
||||
8. ✅ Validou que funciona online
|
||||
|
||||
---
|
||||
|
||||
## 📋 Referência Rápida para Próximas Vezes
|
||||
|
||||
### Fazer novo deploy após mudanças:
|
||||
|
||||
```powershell
|
||||
cd D:\vitor\Pessoal\PJ\Orquestrador
|
||||
bash deploy.sh SEU-PROJECT-ID us-central1
|
||||
```
|
||||
|
||||
### Ver status do serviço:
|
||||
|
||||
```powershell
|
||||
gcloud run services describe orquestrador --region=us-central1
|
||||
```
|
||||
|
||||
### Ver logs:
|
||||
|
||||
```powershell
|
||||
gcloud run logs read orquestrador --region=us-central1 --limit=50 --follow
|
||||
```
|
||||
|
||||
### Parar o serviço:
|
||||
|
||||
```powershell
|
||||
gcloud run services delete orquestrador --region=us-central1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
## Problema: "Erro ao conectar ao banco de dados"
|
||||
|
||||
**Solução:**
|
||||
|
||||
1. Verifique se IP público está correto: `gcloud sql instances describe orquestrador-db --format="value(ipAddresses[0].ipAddress)"`
|
||||
2. Verifique arquivo `.env` - DATABASE_URL está correto?
|
||||
3. Verifique se usuário `orquestrador` foi criado
|
||||
4. Teste: `psql -h IP -U orquestrador -d orquestrador_db -c "SELECT 1"`
|
||||
|
||||
## Problema: "Cloud Run não consegue conectar ao banco"
|
||||
|
||||
**Solução:**
|
||||
|
||||
1. Verifique se Cloud SQL Connection Name está correto no `.env`
|
||||
2. Verifique se a rede foi criada
|
||||
3. Cloud Run precisa estar na mesma região do Cloud SQL
|
||||
|
||||
## Problema: "Imagem Docker não está sendo enviada"
|
||||
|
||||
**Solução:**
|
||||
|
||||
1. Verifique se Docker está instalado: `docker --version`
|
||||
2. Verifique se Registro de Artefatos foi criado no console
|
||||
3. Verifique autenticação: `gcloud auth login`
|
||||
|
||||
## Problema: "Erro ao ativar API"
|
||||
|
||||
**Solução:**
|
||||
|
||||
1. Confirme que você tem permissão no projeto (pedir ao admin)
|
||||
2. Espere 1-2 minutos e tente novamente
|
||||
3. Ao comando: `gcloud services enable cloudrun.googleapis.com`
|
||||
|
||||
## Problema: "404 - Endpoint não encontrado"
|
||||
|
||||
**Solução:**
|
||||
|
||||
1. Confirme a URL está correta: `gcloud run services describe orquestrador --region=us-central1 --format="value(status.url)"`
|
||||
2. Verifique se o deploy completou: `gcloud run services describe orquestrador --region=us-central1`
|
||||
3. Aguarde ~1 minuto após o deploy terminar
|
||||
|
||||
---
|
||||
|
||||
## 📞 Próximos Passos
|
||||
|
||||
- **Integrar com Banco de Dados Real**: Configurar seeders de dados
|
||||
- **CI/CD Automático**: GitHub Actions para deploy automático
|
||||
- **Monitoramento**: Configurar alertas e dashboards
|
||||
- **Escalabilidade**: Ajustar autoscaling de Cloud Run
|
||||
|
||||
---
|
||||
|
||||
**Dúvidas? Refer-se a:**
|
||||
|
||||
- [DEPLOY_5_PASSOS.md](DEPLOY_5_PASSOS.md) - Resumo rápido
|
||||
- [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Problemas específicos
|
||||
- [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) - Estrutura do projeto
|
||||
|
||||
**Bom deployment! 🚀**
|
||||
@ -1,13 +0,0 @@
|
||||
runtime: python311
|
||||
entrypoint: uvicorn app.main:app --host 0.0.0.0 --port 8080
|
||||
|
||||
env: standard
|
||||
instance_class: F2
|
||||
|
||||
automatic_scaling:
|
||||
min_instances: 1
|
||||
max_instances: 10
|
||||
|
||||
env_variables:
|
||||
GOOGLE_LOCATION: "us-central1"
|
||||
USE_MOCKAROO_WRITES: "false"
|
||||
@ -1,44 +0,0 @@
|
||||
# Cloud Build Configuration para Artifact Registry + Cloud Run
|
||||
# Substitutions: _REGION, _REPO_NAME, _IMAGE_NAME (passados pelo deploy.sh)
|
||||
|
||||
steps:
|
||||
# Step 1: Build Docker image para Artifact Registry
|
||||
- name: "gcr.io/cloud-builders/docker"
|
||||
args:
|
||||
- "build"
|
||||
- "-t"
|
||||
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
|
||||
- "-t"
|
||||
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
|
||||
- "."
|
||||
|
||||
# Step 2: Push para Artifact Registry
|
||||
- name: "gcr.io/cloud-builders/docker"
|
||||
args:
|
||||
- "push"
|
||||
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
|
||||
|
||||
# Step 3: Mostrar URL da imagem (opcional, útil para debug)
|
||||
- name: "gcr.io/cloud-builders/gcloud"
|
||||
entrypoint: "bash"
|
||||
args:
|
||||
- "-c"
|
||||
- "echo 'Imagem pronta: ${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID'"
|
||||
|
||||
# Configuração de imagens para armazenar no Artifact Registry
|
||||
images:
|
||||
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
|
||||
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
|
||||
|
||||
# Configurações de build
|
||||
options:
|
||||
machineType: "N1_HIGHCPU_8"
|
||||
logging: CLOUD_LOGGING_ONLY
|
||||
|
||||
timeout: "1800s"
|
||||
|
||||
# Substitutions padrão (podem ser sobrescritos pelo deploy.sh)
|
||||
substitutions:
|
||||
_REGION: "us-central1"
|
||||
_REPO_NAME: "orquestrador"
|
||||
_IMAGE_NAME: "orquestrador"
|
||||
@ -1,115 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Deploy script for Google Cloud Run + Artifact Registry
|
||||
# Usage: ./deploy.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ENV_FILE="${ENV_FILE:-.env.prod}"
|
||||
if [ ! -f "${ENV_FILE}" ] && [ -f ".env" ]; then
|
||||
ENV_FILE=".env"
|
||||
fi
|
||||
if [ ! -f "${ENV_FILE}" ]; then
|
||||
echo "ERROR: env file not found. Expected ${ENV_FILE} (or .env)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
get_env_value() {
|
||||
local key="$1"
|
||||
grep -E "^${key}=" "${ENV_FILE}" | tail -n 1 | cut -d'=' -f2- | tr -d '\r'
|
||||
}
|
||||
|
||||
PROJECT_ID=$(gcloud config get-value project)
|
||||
REGION="us-central1"
|
||||
SERVICE_NAME="orquestrador"
|
||||
REPO_NAME="orquestrador"
|
||||
IMAGE_NAME="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${SERVICE_NAME}"
|
||||
|
||||
if [ -z "${PROJECT_ID}" ]; then
|
||||
echo "ERROR: gcloud project is not configured."
|
||||
echo "Run: gcloud config set project <your-project-id>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Starting deploy to Cloud Run"
|
||||
echo "Project: ${PROJECT_ID}"
|
||||
echo "Region: ${REGION}"
|
||||
echo "Env file: ${ENV_FILE}"
|
||||
|
||||
echo "1) Checking auth..."
|
||||
ACTIVE_ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)")
|
||||
if [ -z "${ACTIVE_ACCOUNT}" ]; then
|
||||
echo "ERROR: no active gcloud account. Run: gcloud auth login"
|
||||
exit 1
|
||||
fi
|
||||
echo "Authenticated as: ${ACTIVE_ACCOUNT}"
|
||||
|
||||
echo "2) Enabling required APIs..."
|
||||
gcloud services enable \
|
||||
run.googleapis.com \
|
||||
cloudbuild.googleapis.com \
|
||||
artifactregistry.googleapis.com \
|
||||
aiplatform.googleapis.com \
|
||||
sqladmin.googleapis.com \
|
||||
--quiet
|
||||
|
||||
echo "3) Building image with Cloud Build..."
|
||||
gcloud builds submit \
|
||||
--config=cloudbuild.yaml \
|
||||
--substitutions=_REGION="${REGION}",_REPO_NAME="${REPO_NAME}",_IMAGE_NAME="${SERVICE_NAME}"
|
||||
|
||||
echo "4) Deploying to Cloud Run..."
|
||||
|
||||
ENV_VARS=""
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
||||
[[ -z "${line// }" ]] && continue
|
||||
if [[ "$line" == *"="* ]]; then
|
||||
clean_line=$(echo "$line" | tr -d '\r')
|
||||
ENV_VARS="${ENV_VARS}${clean_line},"
|
||||
fi
|
||||
done < "${ENV_FILE}"
|
||||
ENV_VARS="${ENV_VARS%,}"
|
||||
|
||||
# Prefer new key (MySQL tools), fallback to legacy key
|
||||
CLOUD_SQL_CONN=$(get_env_value "DB_CLOUD_SQL_CONNECTION_NAME")
|
||||
if [ -z "${CLOUD_SQL_CONN}" ]; then
|
||||
CLOUD_SQL_CONN=$(get_env_value "CLOUD_SQL_CONNECTION_NAME")
|
||||
fi
|
||||
RUN_VPC_CONN=$(get_env_value "RUN_VPC_CONNECTOR")
|
||||
RUN_VPC_EGRESS=$(get_env_value "RUN_VPC_EGRESS")
|
||||
|
||||
DEPLOY_ARGS=(
|
||||
--image="${IMAGE_NAME}:latest"
|
||||
--region="${REGION}"
|
||||
--platform=managed
|
||||
--memory=512Mi
|
||||
--cpu=1
|
||||
--timeout=3600
|
||||
--max-instances=10
|
||||
--allow-unauthenticated
|
||||
)
|
||||
|
||||
if [ -n "${ENV_VARS}" ]; then
|
||||
DEPLOY_ARGS+=(--set-env-vars="${ENV_VARS}")
|
||||
else
|
||||
echo "WARN: no env vars found in ${ENV_FILE}"
|
||||
fi
|
||||
|
||||
if [ -n "${CLOUD_SQL_CONN}" ]; then
|
||||
DEPLOY_ARGS+=(--add-cloudsql-instances="${CLOUD_SQL_CONN}")
|
||||
echo "Cloud SQL socket enabled: ${CLOUD_SQL_CONN}"
|
||||
fi
|
||||
|
||||
if [ -n "${RUN_VPC_CONN}" ]; then
|
||||
DEPLOY_ARGS+=(--vpc-connector="${RUN_VPC_CONN}")
|
||||
DEPLOY_ARGS+=(--vpc-egress="${RUN_VPC_EGRESS:-private-ranges-only}")
|
||||
echo "VPC connector enabled: ${RUN_VPC_CONN}"
|
||||
fi
|
||||
|
||||
gcloud run deploy "${SERVICE_NAME}" "${DEPLOY_ARGS[@]}"
|
||||
|
||||
echo "Deploy finished."
|
||||
echo "Service URL:"
|
||||
gcloud run services describe "${SERVICE_NAME}" --region="${REGION}" --format='value(status.url)'
|
||||
|
||||
@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script para setup inicial no Google Cloud SQL
|
||||
# Uso: ./setup-database.sh <project-id> <instance-name> <region>
|
||||
|
||||
set -e
|
||||
|
||||
PROJECT_ID=${1:-seu-projeto-id}
|
||||
INSTANCE_NAME=${2:-orquestrador-db}
|
||||
REGION=${3:-us-central1}
|
||||
DB_NAME="orquestrador"
|
||||
DB_USER="postgres"
|
||||
|
||||
echo "📊 Criando instância Cloud SQL PostgreSQL"
|
||||
echo "📦 Projeto: $PROJECT_ID"
|
||||
echo "🏢 Instância: $INSTANCE_NAME"
|
||||
echo "🌍 Região: $REGION"
|
||||
|
||||
# Habilitar SQL Admin API
|
||||
echo "📡 Habilitando Cloud SQL Admin API..."
|
||||
gcloud services enable sqladmin.googleapis.com
|
||||
|
||||
# Criar instância PostgreSQL
|
||||
echo "🔨 Criando instância PostgreSQL..."
|
||||
gcloud sql instances create $INSTANCE_NAME \
|
||||
--project=$PROJECT_ID \
|
||||
--database-version=POSTGRES_15 \
|
||||
--region=$REGION \
|
||||
--tier=db-f1-micro \
|
||||
--availability-type=ZONAL \
|
||||
--backup-start-time=03:00 \
|
||||
--enable-bin-log \
|
||||
--no-assign-ip
|
||||
|
||||
# Criar banco de dados
|
||||
echo "🗄️ Criando banco de dados..."
|
||||
gcloud sql databases create $DB_NAME \
|
||||
--instance=$INSTANCE_NAME \
|
||||
--project=$PROJECT_ID
|
||||
|
||||
# Criar usuário
|
||||
echo "👤 Criando usuário de banco de dados..."
|
||||
gcloud sql users create $DB_USER \
|
||||
--instance=$INSTANCE_NAME \
|
||||
--project=$PROJECT_ID
|
||||
|
||||
echo ""
|
||||
echo "✅ Setup do banco de dados concluído!"
|
||||
echo ""
|
||||
echo "📋 Configurações do Cloud SQL:"
|
||||
echo "🏢 Instância: $INSTANCE_NAME"
|
||||
echo "📦 Banco: $DB_NAME"
|
||||
echo "👤 Usuário: $DB_USER"
|
||||
echo ""
|
||||
echo "próximos passos:"
|
||||
echo "1. Defina a senha do usuário postgres no Cloud Console"
|
||||
echo "2. Configure a connection string:"
|
||||
echo " postgresql://$DB_USER:SENHA@/cloudsql/$PROJECT_ID:$REGION:$INSTANCE_NAME/$DB_NAME"
|
||||
|
||||
Loading…
Reference in New Issue