Saltar a contenido

MyHTG

Descripción

MyHTG es el portal web externo de IRIS para clientes y proveedores de HTG Express. Permite consultar expediciones, responder ofertas, gestionar vehículos, conductores, disponibilidad, documentos, facturación y flujos públicos enviados por email, como aceptación de órdenes de carga, tracking, CMRs o respuestas de ofertas.

La aplicación está construida con Angular y se despliega en Kubernetes (EKS) como frontend estático servido por Nginx. Igual que IRIS Frontend, recibe la configuración de entorno en runtime mediante un ConfigMap montado como assets/config/config.json.

Arquitectura

graph TB
    User([Cliente / Proveedor]) -->|HTTPS| ALB[Application Load Balancer]
    ALB --> Nginx

    subgraph Pod["Pod MyHTG (EKS)"]
        Nginx[Nginx + Angular SPA]
    end

    style Pod fill:#f5f5f5,stroke:#333

Componentes

Componente Servicio AWS/K8s Función
Load Balancer ALB Entrada HTTPS pública
Aplicación EKS Deployment Sirve la SPA Angular con Nginx
Configuración ConfigMap Inyecta endpoints y flags en config.json
Imagen ECR iris/myhtg Imagen multi-stage Node + Nginx
Secretos ECR ExternalSecret + ECR Pull privado desde registry compartido
Logs CloudWatch Logs Logs de Nginx vía Fluent Bit

Entornos

Entorno URL Namespace Cuenta AWS GitOps
Producción iris-my.htg-express.com infra-iris-myhtg-pro 200702211100 pro/values.yaml
Test my-test.htg-express.com infra-iris-myhtg-test 913305982008 test/values.yaml
Dev my-dev-li.htg-express.com infra-iris-myhtg-dev 913305982008 dev/values.yaml

Repositorios

Tipo Proyecto Bitbucket Repositorio Responsabilidad
Código IRIS htgexpress/iris-myhtg Código Angular, Dockerfile y pipeline
Helm chart IRIS | Helm charts htgexpress/helm-iris-my Chart Kubernetes del frontend
GitOps IRIS | GitOps htgexpress/infra-iris-myhtg Valores Helm por entorno

Estructura del repositorio GitOps

infra-iris-myhtg/
├── dev/
│   └── values.yaml
├── test/
│   └── values.yaml
└── pro/
    └── values.yaml

Funcionalidad

MyHTG separa navegación por rol:

Área Rutas principales Función
Cliente /client/home, /client/shipments, /client/new-offer, /client/billing Seguimiento de expediciones, petición de ofertas y facturación
Proveedor /supplier/home, /supplier/requests, /supplier/shipments, /supplier/vehicles, /supplier/drivers, /supplier/freight, /supplier/documents Gestión operativa de cargas, vehículos, conductores y documentación
Cuenta /account-data, /user-profile, /user-company, /help Datos de usuario y empresa
Público /landing/... Landing pages para enlaces enviados por email
Acceso /login, /signup, /password/... Autenticación, alta y recuperación

Las rutas públicas cubren procesos como aceptación de OC, tracking, situación de transporte, CMR de proveedor, autobill, encuestas de satisfacción y baja de multimail.

Helm chart

MyHTG usa el chart infra-iris-myhtg (1.0.0). Su estructura es equivalente al chart de frontends estáticos:

Recurso Función
Deployment Ejecuta un contenedor Nginx con la SPA
Service Expone el puerto 80 dentro del cluster
Ingress Publica la aplicación mediante ALB
ConfigMap app Monta assets/config/config.json
ConfigMap nginx Monta la configuración Nginx
HPA Soportado por chart, desactivado en los valores actuales
ECR Crea recursos para pull privado desde ECR

CI/CD

Automático (rama develop)

  1. Construye la imagen Docker con Dockerfile.
  2. Etiqueta la imagen con los 7 primeros caracteres del commit.
  3. Publica la imagen en ECR.
  4. Actualiza dev/values.yaml en el repositorio GitOps.
  5. ArgoCD sincroniza el entorno dev.

Manual

El pipeline manual-deploy permite desplegar una referencia Git a dev, test o pro.

Variable Descripción Valores
GIT_REF Commit SHA, tag o rama current, SHA, tag, rama
ENVIRONMENT Entorno destino dev, test, pro

El pipeline comprueba antes si la imagen ya existe en ECR para no reconstruir tags ya publicados.

Imágenes Docker

graph LR
    Node[node:22] --> Build[npm install + build-prod]
    Build --> Nginx[nginx:1.28.0-alpine3.21]
    Nginx --> Pod[Pod EKS]
Campo Valor
Repositorio ECR 203965864736.dkr.ecr.eu-west-1.amazonaws.com/iris/myhtg
Dockerfile Dockerfile
Build runtime Node 22
Gestor paquetes npm
Runtime Nginx 1.28.0 Alpine
Build Angular npm run build-prod
Directorio Nginx /usr/share/nginx/html
Config runtime assets/config/config.json montado desde ConfigMap

Configuración

El bloque configuration.app del values.yaml se serializa como JSON y se monta en la aplicación.

Clave Uso
uri Endpoint principal de IRIS API
myUri Endpoint del portal MyHTG
mapsUri API de mapas
wsHost, wsPusherKey, wsCluster, wsTLS WebSockets/Pusher
trackAnalitycs Flag de analítica
version Versión visible desde package.json

Configuración por entorno

Parámetro Dev Test Pro
Host público my-dev-li.htg-express.com my-test.htg-express.com iris-my.htg-express.com
uri api-dev-li.htg-express.com/api/v1 api-test.htg-express.com/api/v1 api.htg-express.com/api/v1
myUri my-dev-li.htg-express.com/api/v1 my-test.htg-express.com/api/v1 iris-my.htg-express.com/api/v1
trackAnalitycs false false false
Réplicas 1 1 1
HPA No No No

Recursos Kubernetes

Aplicación

Recurso Activación Detalle
Deployment Siempre Un contenedor Nginx con la SPA
Service Siempre ClusterIP puerto 80
Ingress Siempre ALB internet-facing
ConfigMap app Siempre config.json runtime
ConfigMap nginx Siempre Configuración Nginx
ServiceAccount Siempre Sin automount de token
ECR pull secret Siempre Acceso al ECR compartido

Exposición externa

Parámetro Valor
IngressClass alb
Esquema internet-facing
Target type IP
Política TLS ELBSecurityPolicy-TLS13-1-2-2021-06
Redirección HTTP→HTTPS Habilitada
Health check /

Dimensionado

Entorno Réplicas Requests Limits
Dev 1 100m CPU / 128Mi 100m CPU / 128Mi
Test 1 100m CPU / 128Mi 100m CPU / 128Mi
Pro 1 100m CPU / 128Mi 100m CPU / 128Mi

Operaciones

Health checks

El chart configura liveness y readiness sobre /healthz; el ALB usa / como health check.

curl -I https://iris-my.htg-express.com/
kubectl logs -n infra-iris-myhtg-pro deployment/infra-iris-myhtg-pro --tail=100 -f

Logs

Los logs de Nginx se envían al log group catch-all del cluster:

aws logs tail /aws/eks/htg-pro/aws-fluentbit-logs \
  --profile htg-pro --region eu-south-2 --follow \
  --filter-pattern 'infra-iris-myhtg-pro'

Referencia técnica

Capa Tecnología Versión
Framework Angular 19.2
Build Node.js / npm 22 / npm
Runtime web Nginx 1.28.0 Alpine
UI Bootstrap 5.3
Mapas Leaflet 1.9
WebSockets Pusher JS 7.x
Contenedor Docker Multi-stage
Orquestación Kubernetes (EKS) 1.32
CI/CD Bitbucket Pipelines -
GitOps ArgoCD -
Helm chart infra-iris-myhtg 1.0.0
Registry Amazon ECR iris/myhtg