1 minute read

Snow-White ships with its own OTel Collector, an otel-event-filter-stream deployment, and (by default) an InfluxDB instance to store traces for coverage calculation. That’s convenient for a first install, but it’s redundant weight if your organization already runs a tracing backend that your applications export to — you end up paying for two ingestion pipelines instead of one.

Release 1.9.0 fixes that for operators.

otelCollector.disableIngestion

Set this to true in your Helm values and Snow-White stops deploying its own ingestion path altogether: the OTel Collector’s coverage-trace pipelines, the otel-event-filter-stream Deployment, and the public /v1/traces route are no longer created. Snow-White’s own self-observability (its microservices’ internal telemetry) is unaffected — this only removes the stack that exists to ingest your applications’ traces for coverage analysis.

otelCollector:
  disableIngestion: true

Query Grafana Tempo directly

1.9.0 also lets openapi-coverage-stream read traces straight from an externally operated Grafana Tempo instance instead of Snow-White’s bundled InfluxDB:

snowWhite:
  openapiCoverageStream:
    tempo:
      endpoint: 'https://tempo.example.com'
      token: 'your-bearer-token'

Combine both settings and Snow-White no longer runs its own trace-ingestion pipeline or datastore at all — it just queries the Tempo you’re already operating. Fewer pods, less CPU and memory reserved in the cluster, one less system to keep patched.

One thing Helm can’t infer for you: setting disableIngestion: true does not automatically turn off the bundled InfluxDB subchart. If you’re switching to Tempo, set influxdb2.enabled: false yourself, or you’ll have an InfluxDB StatefulSet running unused.

See the Deployment Guide for the full set of otelCollector and openapiCoverageStream options.

Updated: