# Epic 4: DevOps & Deployment ## Epic Goal Containerizar a aplicação e preparar infraestrutura completa de deploy em Kubernetes, permitindo hospedar o portal AutomatizaSE em produção de forma escalável, segura e gerenciável. Epic entrega imagem Docker otimizada e manifests K8s prontos para deploy. ## Epic Status - **Status:** Not Started - **Priority:** P1 (High) - **Effort Estimate:** 1-2 days - **Dependencies:** Epic 1, Epic 2, Epic 3 (POC finalizada) ## Value Proposition Este epic estabelece a infraestrutura de produção, entregando: - ✅ Aplicação containerizada com Docker otimizado para Next.js - ✅ Manifests Kubernetes prontos para deploy - ✅ Configuração de secrets e variáveis de ambiente - ✅ Ingress configurado com nginx para domínio portal.automatizase.com.br - ✅ Aplicação rodando em produção no cluster K8s ## User Stories ### Story 4.1: Criar Dockerfile e Manifests Kubernetes para Deploy [Link: story-4-1-criar-dockerfile-k8s-manifests.md](../../stories/4.1.story.md) **Descrição:** Criar Dockerfile otimizado para Next.js e todos os manifests Kubernetes necessários (Deployment, Service, Ingress, Secret) para deploy da aplicação no cluster K8s no namespace `automatizase`. **Escopo:** - Dockerfile multi-stage build otimizado para produção - Kubernetes Deployment com envFrom para secrets - Kubernetes Service para expor aplicação internamente - Kubernetes Secret com todas as variáveis do `.env.local` - Kubernetes Ingress com nginx para domínio `portal.automatizase.com.br` - Porta customizada (não 3000/8080) para evitar conflitos **Acceptance Criteria:** 1. Dockerfile constrói imagem Next.js com sucesso e otimizada para produção 2. Deployment manifest configurado com: - Namespace: `automatizase` - Replicas: 2 (alta disponibilidade) - Resources limits/requests definidos - envFrom carregando secrets - Porta customizada (ex: 3100) 3. Service manifest expõe Deployment internamente 4. Secret manifest contém todas as variáveis do `.env.local` (Supabase, n8n, EvolutionAPI, etc) 5. Ingress manifest configurado com: - nginx ingress class - Host: `portal.automatizase.com.br` - TLS/SSL configurado - Routing para Service correto 6. Aplicação acessível via `https://portal.automatizase.com.br` após deploy 7. Documentação de deploy criada (README-DEPLOY.md) ### Story 4.2: Criar CI/CD Pipeline para Build e Deploy Automático [Link: story-4-2-criar-cicd-pipeline.md](../../stories/4.2.story.md) **Descrição:** Configurar pipeline CI/CD (GitHub Actions ou GitLab CI) para build automático da imagem Docker e deploy no cluster K8s. **Escopo:** - Pipeline de build de imagem Docker - Push para registry (Docker Hub, GCR, ou registry privado) - Deploy automático no cluster K8s - Validações e health checks **Acceptance Criteria:** 1. Pipeline roda automaticamente em push para branch `main` 2. Build de imagem Docker com versionamento (tags) 3. Push de imagem para registry configurado 4. Deploy automático no namespace `automatizase` 5. Health checks validam deploy bem-sucedido 6. Rollback automático em caso de falha 7. Notificações de sucesso/falha do pipeline ### Story 4.3: Configurar Monitoramento e Logs [Link: story-4-3-configurar-monitoring-logs.md](../../stories/4.3.story.md) **Descrição:** Configurar coleta de logs e métricas básicas da aplicação rodando no K8s. **Escopo:** - Configuração de logs centralizados - Métricas básicas (CPU, memória, requests) - Dashboards de monitoramento - Alertas críticos **Acceptance Criteria:** 1. Logs da aplicação coletados centralmente (ELK, Loki, CloudWatch, etc) 2. Métricas de pods disponíveis (CPU, memória, network) 3. Dashboard básico criado para visualizar saúde da aplicação 4. Alertas configurados para: - Pods crashando - Alto uso de recursos - Falhas de health checks 5. Documentação de acesso aos logs e métricas ## Technical Notes - **Dockerfile:** Multi-stage build (build → production) - **Base Image:** node:20-alpine para produção - **Registry:** Definir qual registry usar (Docker Hub, GCR, ECR, registry privado) - **K8s Version:** Compatível com versão atual do cluster - **Ingress Controller:** nginx-ingress já instalado no cluster - **Namespace:** `automatizase` (criar se não existir) - **Porta interna:** 3100 (evitar conflito com 3000/8080) - **Secrets:** Armazenar credenciais sensíveis (Supabase, n8n, EvolutionAPI) - **Resources:** Definir limits/requests apropriados (ex: 512Mi RAM, 500m CPU) ## Acceptance Criteria (Epic Level) 1. ✅ Imagem Docker construída e disponível em registry 2. ✅ Aplicação deployada no namespace `automatizase` 3. ✅ Aplicação acessível via `https://portal.automatizase.com.br` 4. ✅ Secrets carregados corretamente (aplicação funciona com credenciais) 5. ✅ Ingress roteia tráfego corretamente para pods 6. ✅ Pods reiniciam automaticamente em caso de falha 7. ✅ Logs e métricas visíveis e coletados 8. ✅ Documentação de deploy completa ## Definition of Done - [ ] Todas as 3 stories completadas - [ ] Aplicação rodando em produção no K8s - [ ] Testes de carga básicos executados - [ ] Documentação de deploy e troubleshooting criada - [ ] Rollback testado e funcional - [ ] Secrets rotacionados e seguros - [ ] Monitoramento e alertas configurados