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 https://github.com/dcm4che-dockerfiles/keycloak-proxy/tree/master 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