0.152.0
🛑 Breaking changes 🛑
api: Move config parsing and CRD metrics from apis to internal package (#4362)- Methods on
*Config(packageapis/v1beta1) converted to standalone functions ininternal/otelconfig, now taking*v1beta1.Configas the first parameter:- GetEnabledComponents, GetReceiverPorts, GetExporterPorts, GetExtensionPorts, GetReceiverAndExporterPorts, GetAllPorts, GetEnvironmentVariables, GetAllRbacRules, ApplyDefaults, GetLivenessProbe, GetReadinessProbe, GetStartupProbe, Yaml, NullObjects
- Methods on
*Serviceconverted to functions ininternal/otelconfig:- MetricsEndpoint, GetTelemetry
- ApplyDefaults → renamed to ServiceApplyDefaults
- Method on
*Telemetryconverted to function:- ToAnyConfig → renamed to TelemetryToAnyConfig
- Functions moved from
apis/v1beta1tointernal/metricswith renames:- BootstrapMetrics → Bootstrap
- NewMetrics(prv, ctx, cl) → New(ctx, prv, cl) (parameter reorder: ctx now first)
- Types moved out of
apis/v1beta1:- MetricsConfig, Telemetry → internal/otelconfig
- Metrics → internal/metrics
- Methods on
💡 Enhancements 💡
-
target allocator: Add support for dropping ServiceMonitor/PodMonitor endpoints that reference arbitrary files (#5104) -
auto-instrumentation: Allow to run the mutating webhook using static configuration, without the need for CRDs. (#4201)With this change, you can deploy the manager as a mutating webhook without setting up a v1alpha1.Instrumentation custom resource
or the v1alpha1.Instrumentation CRD.Instead, you can now set up instrumentation by configuring the manager via its config file with these settings:
ignore-missing-collector-crds: true enable-instrumentation-crds: false # Ignore that the CRD is not registered. enable-multi-instrumentation: false instrumentations: # Static configuration for our instrumentation spec: exporter: endpoint: http://collector.default.svc:4318 propagators: - tracecontext - baggage - b3 java: image: "java-autoinstrumentation:dev"
-
target allocator: Improve the error message when the target allocator is enabled but the Prometheus receiver is not named exactly "prometheus". (#5017)When only named instances such as "prometheus/otelcol" are present, the error now lists them and explains that a receiver named exactly "prometheus" is required.
🧰 Bug fixes 🧰
-
collector: Remove unnecessary RBAC permissions from the events receiver. (#5073) -
collector: Fix when configuring a gRPC port for thejaeger_queryextension, thecollector-extensionService only generates an HTTP port and is missing the gRPC port. (#4912) -
collector: Explicitly set without_type_suffix, without_units, and without_scope_info to false on the operator-injected Prometheus telemetry reader. (#5075)Preserves historical metric names. Without this, users upgrading to a collector containing open-telemetry/opentelemetry-collector#15027 would see operator-managed collector metric names silently change shape. Added alpha feature gate operator.collector.usedefaulttelemetryshape (off by default) to opt into collector defaults instead. The gate will be promoted to beta (on by default) in a future release.
-
target allocator: Fix scrapeClass tlsConfig fields being silently dropped in target allocator config. (#5101)scrapeClasses with tlsConfig like the following had their TLS fields silently dropped
when passed to the target allocator:
scrapeClasses:
- name: tls-config
tlsConfig:
caFile: /scrapeclass-ca.pem
insecureSkipVerify: true -
collector: Restrict automatic RBAC from users without the necessary permissions (#5105)If the operator has permission to create ClusterRoles and ClusterRoleBindings, it sets up RBAC
for collectors automatically based on their configuration.
If a user tries to create an OpenTelemetryCollector whose permissions would be automatically
generated this way, and the user doesn't have the permissions themselves, it will be rejected.
If the collector tries to use an existing ServiceAccount, only the permissions missing from
that ServiceAccount are checked this way. -
collector: Skip provisioning Services, Ingress, NetworkPolicy, and HPA for sidecar mode collectors since the operator does not control the Pod lifecycle in that mode. PodMonitors are still provisioned when metrics are enabled. (#4934)