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¶
- Desplegar en
devops-vm, con heaps reducidos y límites de memoria por contenedor, reutilizando el túnel existente - VM dedicada según el diseño 1.1
- Redimensionar
devops-vma 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) yCDP_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.