0.154.0
🛑 Breaking changes 🛑
collector: Promote the operator.collector.usedefaulttelemetryshape feature gate to beta. The operator-injected Prometheus telemetry reader now uses collector defaults by default — metric names from operator-managed collectors no longer carry type suffixes, units, or scope_info. (#5075)
Users wanting the pre-v0.154.0 metric name shape can disable the gate via --feature-gates=-operator.collector.usedefaulttelemetryshape, or pin without_type_suffix/without_units/without_scope_info to false explicitly under spec.config.service.telemetry. The gate will be promoted to stable and removed in a future release.
💡 Enhancements 💡
-
collector: Add status.observedGeneration and status.conditions support for OpenTelemetryCollector resources. (#4312) -
operator: Add pod-webhook subcommand for running a standalone pod mutation webhook (#5010)
The operator binary now supports apod-webhooksubcommand that runs only the pod mutation
webhook (auto-instrumentation and sidecar injection) without the controllers. This enables
deploying the webhook separately. -
opampbridge: Add TLS configuration support to the OpAMP Bridge, including options to disable TLS or skip certificate verification. (#4921) -
opamp: Allow standalone OpAMP bridge agents to configure per-agent non-identifying attributes. (#5245) -
opamp-bridge: Make standalone OpAMP Bridge manifests and runtime permissions friendlier for OpenShift and namespaced RBAC. (#5277) -
operator: Add standalone pod webhook deployment for High Availability on OpenShift (#5010)
On OpenShift with OLM, the pod mutation webhook (auto-instrumentation and sidecar injection)
is now deployed as a standalone Deployment with 2 replicas by default, enabling HA.OpenShift with OLM:
- The standalone webhook deployment is managed by OLM via the CSV
- Default: 2 replicas for HA
- Pod anti-affinity spreads replicas across different nodes
- PodDisruptionBudget with maxUnavailable: 1 ensures availability during node maintenance
- Only scaling down is supported via
OPENSHIFT_WEBHOOK_REPLICASenv var in the Subscription (0 or 1) - TLS certificates are automatically provisioned by OLM
- Automatic cleanup when operator is uninstalled (OLM garbage collection)
Kubernetes (community bundle):
- No change - pod webhook continues to run as part of the operator deployment
-
opamp-bridge: OpAMP Bridge standalone mode (#4913)
Standalone mode for OpAMP Bridge allows users to manage collector configuration from a remote
OpAMP server without the need to deploy full Otel Operator. -
operator: Move all webhooks to the dedicated webhook deployment. (#5010)
This change moves remaining webhooks (defaulting, validating for: Collector, TargetAllocator, Instrumentation, OpAMPBridge) to the dedicated webhook deployment.
Previously, only the pod mutation webhook was served by the webhook deployment, while the other webhooks were served by the controller-manager.
The dedicated webhook deployment is opt-in and enabled by default only on OpenShift with OLM.
🧰 Bug fixes 🧰
-
target allocator: Fix silent target loss when group labels are present in static_configs by sorting labels globally in processTargetGroups. (#4967)
ScratchBuilder.Labels() serializes labels in insertion order. When group labels sort
alphabetically after target labels (e.g. vendor > address), Labels.Get() early
termination returns empty, causing hash collisions that silently drop targets. -
auto-instrumentation: Use MergeFrom patch for Instrumentation blocked-versions status to avoid overwriting unrelated status fields. (#5243) -
target allocator: Accept a prometheus receiver that only declarestarget_allocator:without aconfig:block. (#2998)
When the prometheus receiver is configured with only atarget_allocator:block and noconfig:,
reconciliation previously failed withno prometheusConfig available as part of the configuration.
The target allocator supplies scrape configuration externally in this mode (e.g. via discovered
PrometheusCR objects), so the operator now skips the scrape_configs cleanup when noconfig:
block is present. The webhook validator likewise permits this shape.