Skip to content

proposal: make configuration of a tracing provider dynamic #9998

@yskopets

Description

@yskopets

Title: Make configuration of a tracing provider dynamic

Context:

  • at the moment, tracing provider is configured statically as part of bootstrap config
  • while this approach is very pragmatic, it breaks overall user experience that Envoy can reconfigured on-the-fly
  • although it would be possible to achieve a similar user experience through a hot restart, it feels like a workaround and doesn't seem a long-term solution

Proposal:

  • Make configuration of a tracing provider dynamic

Example use cases:

  • change a tracing provider on-the-fly (e.g., zipkin to opentracing)
  • reconfigure an active tracing provider (e.g., address of a collector)

Anticipated scope of changes:

  • extend Envoy bootstrap config with a new trace driver - envoy.tracers.dynamic
  • implement configuration model for dynamic tracer, e.g. as a new independent xDS API or as a higher-level abstraction on top of RTDS (Runtime Discovery)
  • implement a dynamic tracer as a smart reference to the actual implementation

Open questions:

  • which configuration model to choose: new xDS, RTDS or something else? Does Envoy already have an example of turning a part of bootstrap config into a dynamic configuration ?
  • it's possible that some tracing providers might not support being configured multiple times (e.g., envoy.dynamic.ot and envoy.tracers.opencensus look questionable). Hopefully, it's acceptable to sacrifice them in the beginning and let them improve over time

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions