From feb00a01038f268ab04c56fc057b9fd6a8eb6a36 Mon Sep 17 00:00:00 2001 From: razbroc Date: Thu, 24 Sep 2026 16:15:51 +0300 Subject: [PATCH] feat(helm): allow a separate OTLP endpoint for the mapproxinator container The mapproxy and mapproxinator containers do not speak the same OTLP transport. mapproxy uses the gRPC exporter (src/telemetry/__init__.py imports opentelemetry.exporter.otlp.proto.grpc) and needs a bare host:4317, while mapproxinator uses @map-colonies/telemetry, which is built on @opentelemetry/exporter-trace-otlp-proto - OTLP over HTTP, requiring host:4318/v1/traces. Both configmaps rendered from the same merged tracing.url, so no single value could satisfy both: whichever port was configured, one of the two containers silently dropped every span. Add an opt-in mapproxinator.tracing.url that takes precedence over the shared endpoint. Empty by default, so the rendered output is unchanged for anyone not setting it. --- helm/templates/mapproxinator/mapproxinator-configmap.yaml | 2 +- helm/values.yaml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/helm/templates/mapproxinator/mapproxinator-configmap.yaml b/helm/templates/mapproxinator/mapproxinator-configmap.yaml index 753c8a5..6b5fb85 100644 --- a/helm/templates/mapproxinator/mapproxinator-configmap.yaml +++ b/helm/templates/mapproxinator/mapproxinator-configmap.yaml @@ -24,7 +24,7 @@ data: LOG_PRETTY_PRINT_ENABLED: {{ .Values.mapproxinator.env.logPrettyPrintEnabled | quote }} {{ if $tracing.enabled }} TELEMETRY_TRACING_ENABLED: 'true' - TELEMETRY_TRACING_URL: {{ $tracing.url }} + TELEMETRY_TRACING_URL: {{ .Values.mapproxinator.tracing.url | default $tracing.url }} {{ end }} {{ if $metrics.enabled }} TELEMETRY_METRICS_ENABLED: 'true' diff --git a/helm/values.yaml b/helm/values.yaml index a9fb67d..63bc3db 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -388,6 +388,14 @@ nginx: mapproxinator: enabled: true replicaCount: 1 + tracing: + # The mapproxinator app exports OTLP over HTTP (@map-colonies/telemetry -> + # @opentelemetry/exporter-trace-otlp-proto), while the mapproxy container + # exports OTLP over gRPC. When the collector serves those on different ports + # the shared `tracing.url` cannot satisfy both, so set the HTTP endpoint here, + # e.g. "http://otel-collector:4318/v1/traces". + # Empty means inherit the shared tracing.url. + url: "" image: repository: mapproxinator tag: "latest"