- 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)
129 lines
5.2 KiB
Markdown
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
|