Saltar a contenido

ADR-0003 · Producción en la VM compartida devops-vm detrás del Cloudflare Tunnel existente

  • Estado: aceptado
  • Decisores: área de TI / DevOps de Compulandia
  • Fecha de la decisión: 2026-09-11

Contexto y problema

El diseño de despliegue (revisión 1.1) proponía una VM dedicada e2-standard-4 con un contenedor cloudflared propio, sin puertos publicados y heaps de 4 GB (Elasticsearch) y 2 GB (Unomi). Al momento de desplegar, la empresa ya operaba devops-vm (c3-standard-4, 16 GB, Debian 12, Docker) con 14 aplicaciones en contenedores y un cloudflared como servicio del host, con ~7 GiB de memoria libre y sin swap. Crear otra VM añadía costo y operación; reutilizar la existente exigía convivir con vecinos sin límites de memoria.

Opciones consideradas

  1. Desplegar en devops-vm, con heaps reducidos y límites de memoria por contenedor, reutilizando el túnel existente
  2. VM dedicada según el diseño 1.1
  3. Redimensionar devops-vm a c3-standard-8 y mantener el dimensionado original

Decisión

Opción 1. Elasticsearch con heap de 1 GB y límite de 2,5 GiB, Unomi con heap de 1,5 GB y límite de 2 GiB, Inoyu con límite de 512 MiB (≈ 3,5 GiB en total; medido 1,9 + 1,1 + 0,1 GiB). Los puertos 8181 y 3131 se publican en la red interna de la VPC (CDP_BIND=0.0.0.0; el firewall de GCP solo los admite desde 10.128.0.0/9) para que el cloudflared de la VM o de otro servidor de la VPC los alcance; los hostnames públicos apuntan a la IP interna de la VM. El código se despliega con git clone desde CompulandiaTI/cdp-unomi en /opt/cdp.

Consecuencias

Positivas

  • Sin VM nueva ni túnel nuevo: menos costo y una sola superficie de operación.
  • Límites de memoria: un pico del CDP no puede tumbar a las demás aplicaciones de la VM, ni al revés más allá de lo que ya ocurría.
  • Reversible: el compose acepta el dimensionado original con dos variables (ES_HEAP, UNOMI_HEAP) y CDP_BIND=127.0.0.1.

Negativas / deuda asumida

  • Capacidad reducida respecto del diseño: la VM quedó con ~3,4 GiB disponibles y sin swap; vigilar memoria.
  • Los endpoints públicos de Unomi son alcanzables por cualquier host de la VPC; la protección real es Access.
  • Sin snapshots de disco ni repositorio de snapshots de Elasticsearch configurados todavía (pendiente).
  • Particularidades de la VM que el compose debe contemplar: DNS roto en la red bridge por defecto (build de Inoyu con red de host) y sin volumen para la caché de Karaf.