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

5.2 KiB

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

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

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

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