Component(s)
collector
What happened?
The OpenTelemetryCollector CRD does not expose a first-class field for configuring the collector's own telemetry (metrics, traces, and logs generated by the collector itself). Users must embed telemetry settings in the spec.config string under the service.telemetry block, which:
- Bypasses CRD validation - the operator cannot validate telemetry settings at the API level.
- Makes it impossible to set opinionated defaults for self-telemetry.
- Prevents the operator from aggregating or forwarding collector telemetry independently.
Steps to reproduce:
Deploy an OpenTelemetryCollector with custom telemetry settings embedded in the opaque config string. The telemetry configuration cannot be validated, defaulted, or observed by the operator.
Expected behavior:
The CRD should have a top-level spec.telemetry field similar to the upstream collector's service.telemetry. The operator would merge spec.telemetry into the collector's service.telemetry config at reconciliation time, allowing CRD-level validation and defaulting.
What did you see instead?
All telemetry configuration is opaque text inside spec.config. No validation, no defaults, no observability into what the collector is publishing about itself.
Additional context:
This is tracked as a known gap in #5075. The operator already exposes certain top-level fields in the ClusterObservability CR. Extending the same pattern to the collector's own telemetry would provide consistency.
Component(s)
collector
What happened?
The OpenTelemetryCollector CRD does not expose a first-class field for configuring the collector's own telemetry (metrics, traces, and logs generated by the collector itself). Users must embed telemetry settings in the spec.config string under the service.telemetry block, which:
Steps to reproduce:
Deploy an OpenTelemetryCollector with custom telemetry settings embedded in the opaque config string. The telemetry configuration cannot be validated, defaulted, or observed by the operator.
Expected behavior:
The CRD should have a top-level spec.telemetry field similar to the upstream collector's service.telemetry. The operator would merge spec.telemetry into the collector's service.telemetry config at reconciliation time, allowing CRD-level validation and defaulting.
What did you see instead?
All telemetry configuration is opaque text inside spec.config. No validation, no defaults, no observability into what the collector is publishing about itself.
Additional context:
This is tracked as a known gap in #5075. The operator already exposes certain top-level fields in the ClusterObservability CR. Extending the same pattern to the collector's own telemetry would provide consistency.