# 🚀 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! 🚀**