Despliegue del Tracing distribuido
Activación en módulos de plataforma
El sistema de tracing distribuido se puede activar en los módulos core de plataforma: API Manager, Audit Router, BPM Engine, Cache Server, Controlpanel, Dashboard Engine, Device Simulator, DigitalTwin Broker, Flow Engine, IoT Broker, Microservices Gateway, Oauth Server, Report Engine, Rules Engine, Semantic Broker.
Para activar modificar estas variables de entorno (las 2 últimas no hace falta):
OTEL_JAVAAGENT_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger-service:4317
#OTEL_SERVICE_NAME=router
#OTEL_METRICS_EXPORTER=none
Despliegue del módulo
Existen dos distribuciones para desplegar Jaeger: la All In One y cada módulo por separado (collector, query service, UI…) Para entornos productivos se recomienda la separada, no obstante, hasta que llegue el caso de desplegar cada componente por separado, se va a desplegar la versión todo en uno.
Además, para securizar la UI de jaeger, se ha hecho uso de un proxy-sidecar de Keycloak, antes mantenido por Jboss con el código fuente en GitHub - dcm4che-dockerfiles/keycloak-proxy Este proxy nos puede servir para aplicativos web en los que no sea fácil configurar seguridad con OpenID/OAuth/Keycloak.
Para generar la imagen, se ha creado un directorio “keycloak-sidecar-proxy” en el directorio devops/build-deploy/docker/dockerfiles (se va a añadir al image generation script)
registry.onesaitplatform.com/onesaitplatform/keycloak-proxy:latest
Rancher 1.6
version: '2'
services:
jaeger-security-proxy:
image: registry.onesaitplatform.com/onesaitplatform/jaeger-keycloak:1.0
stdin_open: true
hostname: jaeger-security-proxy
network_mode: container:jaeger
volumes:
- /datadrive/onesaitplatform/jaeger/proxy.json:/opt/keycloak-proxy/conf/proxy.json:rw
tty: true
labels:
io.rancher.container.pull_image: always
io.rancher.container.network: true
jaeger:
image: registry.onesaitplatform.com/onesaitplatform/jaeger:1.0-dev
environment:
ES_SERVER_URLS: http://elasticdb.onesait-platform:9200
QUERY_BASE_PATH: /jaeger
COLLECTOR_OTLP_ENABLED: none
stdin_open: true
tty: true
labels:
io.rancher.container.pull_image: always
io.rancher.sidekicks: jaeger-security-proxy
Ruta en nginx
location /jaeger {
proxy_set_header Host $host;
proxy_pass http://jaeger.jaeger:8080/jaeger;
}
Kubernetes / Helm
El módulo Tracing Engine se incluye en la distribución Business Tools, correspondiente al chart onesaitplatform-bsbnstools-chart.
Los detalles de despliegue se encuentran en el siguiente enlace:
Simplificando los detalles, a la hora de desplegar cualquiera de los charts base, engine, intelligence, things o business tools, es necesario añadir el siguiente valor en el fichero custom values de Helm:
global.env.otelEnabled: true
Para, posteriormente, desplegar el chart business tools habilitando el módulo del tracing distribuido, mediante la siguiente variable en el custom values que habrá de pasarse al comando de instalación de Helm:
selector.deployment.tracingengine: true
En distribuciones 5.1.0-survivor ya desplegadas, para habilitar el tracing distribuido es necesario modificar los deployment de los módulos detallados con anterioridad añadiendo o modificando la siguiente variable de entorno:
OTEL_JAVAAGENT_ENABLED a true