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
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)
- Construye la imagen Docker con
Dockerfile.
- Etiqueta la imagen con los 7 primeros caracteres del commit.
- Publica la imagen en ECR.
- Actualiza
dev/values.yaml en el repositorio GitOps.
- 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 |