Dashboard-Automatizase/docs/prd/epic-4-devops-deployment.md
Luis 1391fe6216 feat: enhance Google Calendar integration and update Dockerfile for environment variables
- Updated Dockerfile to include hardcoded environment variables for Next.js build.
- Enhanced Google Calendar API integration by extracting user email from id_token and adding scopes for OpenID and email access.
- Modified credential management to delete existing credentials before creating new ones in n8n.
- Updated dashboard to display connected Google Calendar email and credential details.

Story: 4.2 - Melhorar integração com Google Calendar e atualizar Dockerfile

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-10-12 21:16:21 -03:00

129 lines
5.2 KiB
Markdown

# 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