Agrega lo que faltaba para desplegar workloads/docs-portal/ (ya existente sin commitear): deployment/service/ingress + kustomization siguiendo el patrón de workloads/nginx, Applications de workload y gobernanza separadas, y el workflow de Gitea Actions (build+push a Gitea Registry, bump de versión en el manifiesto) siguiendo el mismo patrón que build.yaml/build-medusa.yaml.
1.2 KiB
1.2 KiB
Red y exposición
TODO (fase 2+): explicar cada dominio, por qué está proxied vs DNS-only en Cloudflare, y el manejo de TLS extremo a extremo. Tabla de dominios abajo es real, pendiente de expandir con capturas/ejemplos.
Dominios activos
| Dominio | Servicio | Namespace | TLS |
|---|---|---|---|
shop.cruzcloud.net |
Frontend Next.js (storefront) | ecommerce |
Cloudflare (edge) |
commerce.cruzcloud.net |
Medusa Store/Admin API | ecommerce |
Cloudflare (edge) |
media.cruzcloud.net |
MinIO (imágenes de producto) | ecommerce |
Cloudflare (edge) |
gitea.cruzcloud.net |
Gitea | — | Cloudflare (edge) |
docs.cruzcloud.net |
Este portal | docs |
Cloudflare (edge) |
TODO
- Diagrama de TLS termination (dónde termina TLS realmente: en Cloudflare, no en Traefik — el tráfico interno NPM→k3d es HTTP plano).
- Explicar por qué el transporte del túnel se fijó a HTTP/2 en vez de QUIC (ver ADR 0003 y el playbook del 504).
- Patrón de diagnóstico "interno sano, público roto" (ver playbook de imágenes NPM).