Releases: open-telemetry/opentelemetry-operator
Release v0.135.0
0.135.0
💡 Enhancements 💡
collector, target allocator
: Add TrafficDistribution support for OpenTelemetryCollector and TargetAllocator Services (#4285)
The TrafficDistribution field is now available in OpenTelemetryCollector and TargetAllocator.
This field allows setting the traffic distribution policy for Kubernetes Services.
Components
Release v0.134.0
0.134.0
💡 Enhancements 💡
target allocator
: Add CollectorTargetReloadInterval option to configure the interval at which the Prometheus receiver reloads targets from the target allocator (#4095)
🧰 Bug fixes 🧰
collector
: Always return a valid OpenTelemetryCollector configuration during v1beta1 conversion. (#4288)
Components
- OpenTelemetry Collector - v0.134.0
- OpenTelemetry Contrib - v0.134.0
- Java auto-instrumentation - v1.33.6
- .NET auto-instrumentation - v1.2.0
- Node.JS - v0.63.0
- Python - v0.58b0
- Go - v0.22.1
- ApacheHTTPD - 1.0.4
- Nginx - 1.0.4
0.133.0
⚠️ Skip Release ⚠️
operator
: Skipped OpenTelemetry Operator release due to an issue on the collectors protobuf parsing that caused HTTP 400 errors for metric submissions. In case of expecitly using the collector v0.133.0 this behavior can be by passed by disabling the collector feature gatepdata.useCustomProtoEncoding
.
For more details see: (opentelemetry-collector#13727)[https://github.com/open-telemetry/opentelemetry-collector/issues/13727]
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
name: my-collector
spec:
image: otel/opentelemetry-collector:0.133.0
args:
- --feature-gates=-pdata.useCustomProtoEncoding
Release v0.132.0
0.132.0
🚩 Deprecations 🚩
collector
: Remove opencensus receiver from parsing logic as it is no longer supported in OpenTelemetry Collector (#4239)
The opencensus receiver has been removed from the operator's receiver parsing logic.
Since 2025-02-14 its no longer supported and got removed from the Collector Distributions.
💡 Enhancements 💡
-
collector
: enable native sidecar on OpenShift 4.16+ with k8s version newer then v1.29 by default. (#4247) -
collector
: Use native sidecar on k8s 1.29+ (#3356)
The operator will automatically use native sidecars whenever a Kubernetes
version 1.29 or higher is discovered.
The usage of native sidecars can be disabled with--feature-gates=-sidecarcontainers.native
.
See: https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/ -
collector
: Add network policy for the collector. (#4231)
This change adds a network policy to the collector to allow traffic to all collector receivers and egress traffic from the collector pod.
The collector network policy can be enabled in the collector CR.spec: networkPolicy: enabled: true
By default it is disabled, however the default value is configured with a feature gate
--feature-gates=operand.networkpolicy
.
The feature gate will be enabled in the future releases. -
operator
: Operator now creates a NetworkPolicy to restrict access to the operator pod. (#4230)
The operator network policy can be enabled with--feature-gates=+operator.networkpolicy
.
The feature gate is disabled by default and it will be enabled in the future releases.
Following APIs are allowe: ingress on port 9443 (webhook), 8080 (metrics port), 8443 (metrics RBAC proxy) and egress on port 6443 (API server). -
target allocator
: Add network policy for the target allocator. (#4231)
This change adds a network policy to the target allocator which allows traffic to the port8080
and outgoing traffic to the API server.
The target allocator network policy can be enabled in the target allocator CR.spec: networkPolicy: enabled: true
By default it is disabled, however the default value is configured with a feature gate
--feature-gates=operand.networkpolicy
.
The feature gate will be enabled in the future releases. -
opamp
: Correlates the OpAMP data from the proxy server with the bridge's own OpAMP data. (#3837) -
collector
: k8sattributes: Add automatic RBAC for new service.name resource attribute generator (#4131)
The k8sattributes processor recently added support for automatic service.name resource attribute generation.
This change ensures that when service.name is configured in the k8sattributes processor, the operator
automatically adds the necessary RBAC rules for replicasets access, which is required for extracting
k8s.deployment.name.
🧰 Bug fixes 🧰
-
opamp
: fixes a bug where the bridge deployment wouldn't rollout on a config change. (#4020) -
collector
: Fix a Deployment restart issue caused when the HPA settings changed, the webhook would modify spec.replicas. (#2585) -
collector
: Operator no longer overwrites ingress annoations on change (#4322)
The operator now respects external manipulations of the Ingress object — instead of
overwriting annotations it respects existing to prevent annotation-overwrite issues
that caused reconciliation loops with external controllers (e.g., Rancher). -
collector, target allocator, opamp
: Remove unnecessary cert-manager CA annotation from CRDs (#4321)
Remove annotationcert-manager.io/inject-ca-from
from all OpenShift CRD manifests. The CRDs on OpenShift are installed via OLM which handles the CA injection.
The annotation is also not needed for non-OpenShift installations on CRDs that do not have a conversion webhook.
Components
Release v0.131.0
0.131.0
🛑 Breaking changes 🛑
operator
: Drop support for Kubernetes 1.23 and 1.24 (#4104)
💡 Enhancements 💡
-
collector
: Add support for extraLabels in ServiceMonitor creation (#4138)
Added extraLabels field to MetricsConfigSpec in v1beta1 API to allow custom labels on ServiceMonitor resources.
This enables users to add additional labels to ServiceMonitors created by the operator for better organization and filtering. -
manager, target-allocator, opamp-bridge, must-gather
: add -trimpath when building binaries (#4078) -
collector, targer allocator, opamp
: Require Go 1.24+ to build the collector, target allocator, and opamp. (#4173) -
collector
: Added RBAC permissions for config.extensions.k8s_observer. (#4113)
Generating RBAC rules for the k8s_observer extension in the OpenTelemetry Collector when used in the operator.
The change addresses the issue where the collector lacked necessary permissions to list and watch Kubernetes resources. -
auto-instrumentation
: Upgrade urllib3 upper limit following Python 3.8 support drop (#3712)
🧰 Bug fixes 🧰
collector
: added check for maxReplica when minReplica is set in autoscaler (#4160)
When using the AutoScaler, maxReplica must be set when minReplica is set.target allocator
: check CRD availability before registering informers (#3987)target allocator
: Allow collector to use TLS Config from Target Allocator with ScrapeConfig (#3724)
This change allows the target allocator to configure TLS Config for a collector using the ScrapeConfig.
Components
Release v0.129.1
0.129.1
🛑 Breaking changes 🛑
pkg/instrumentation
: Move pkg/instrumentation to internal/instrumentation (#4140)targetallocator, collector
: Remove stable feature gate PrometheusOperatorIsAvailable (#4141)
💡 Enhancements 💡
-
controller
: Harmonize CLI and env var configuration to allow setting all configuration (#3565)
In order of priority, the default configuration is assigned first, overwritten by environment variables and CLI arguments successively. -
managementState
: managementState property on resources is no longer a required field since it has a default value as managed (#4076) -
operator
: Support for Kubernetes1.33
version. (#4048) -
target allocator
: Adds support for HTML output in the target allocator. (#3622) -
controller
: Support a yaml config file to set all the configuration options exposed by controllers (#3565)
🧰 Bug fixes 🧰
target allocator
: ensure stable iteration order of target labels when generating hash (#4082)target allocator
: Fix OpenShift must-gather for Target Allocator (#4084)opampbridge
: Do not register the opampbridge webhook if the CRD is not present (#4070)auto-instrumentation
: Fix the bug that k8s.container.name in OTEL_RESOURCE_ATTRIBUTES env is not set correctly for Go the auto-instrumentation when the pod has multiple containers. (#4089)collector
: Fix the headless service name in StatefulSet mode to ensure consistent DNS resolution. The ServiceName field in the OpenTelemetryCollector spec can be used to customize the StatefulSet's serviceName. (#4029)
The ServiceName field in the OpenTelemetryCollector
spec can be used to customize the StatefulSet's serviceName if needed, while maintaining
the default behavior of using the headless service name.operator
: Remove invalidoperator.observability.prometheus
feature flag references (#4159)
Fixed operator installation failure caused by references to the non-existentoperator.observability.prometheus
feature flag.
Removed the flag from the bundle and cleaned up API and documentation references.
Components
Release v0.127.0
0.127.0
💡 Enhancements 💡
-
collector
: Move validation to be part of the CRD for sidecar mode (#3319) -
target allocator
: Promote the operator.collector.targetallocatorcr feature flag to Beta (#2422)As a result of this change, when the target allocator section is enabled in the Collector CR,
this now creates a TargetAllocator CR instead of generating the manifests directly. Behavior should otherwise be
unchanged. You can go back to the previous behaviour by passing the
--feature-gates=-operator.collector.targetallocatorcr
command-line option to the operator. -
collector
: Set the default spec.replicas to 1 in the OpenTelemetryCollector CRD. (#4042)This default no longer relies on the admission webhook.
🧰 Bug fixes 🧰
-
collector, target allocator
: Fix operator RBAC for managing targetallocator finalizers on OpenShift. (#4069)
On OpenShiftOwnerReferencesPermissionEnforcement
is enabled by default, which requires the operator to have permissions to remove finalizers from resources it owns.
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement -
target allocator
: Add app.kubernetes.io/managed-by label to Target Allocator CRs created by the Collector CR (#4025) -
target allocator
: Fixes an issue where the same target from two different jobs was being allocated for only one job (#4044)
Components
Release v0.126.0
0.126.0
🛑 Breaking changes 🛑
target-allocator
: Switch to Prometheus 3.0 defaults for ScraperProtocols, requires prometheusreceiver >0.120.0 (#3872)
💡 Enhancements 💡
target-allocator
: Allow to configure ScraperProtocols in prometheus common config (#4000)target allocator
: set default target allocator grace period to 30 seconds (#3989)
The config option collectorNotReadyGracePeriod have been set to 30s by default. The target allocator now waits for 30 seconds before reallocating targets from a collector which isn't Ready.
Setting this value to 0 will restore previous behaviour.
🧰 Bug fixes 🧰
otel-allocator
: Remove overwrite of global config ScraperProtocols (#3996)target allocator
: Fix user-defined volumes in the TargetAllocator CR (#3992)collector
: add terminationGracePeriodSeconds to DaemonSet and StatefulSet specs (#4003)
Components
Release v0.125.0
0.125.0
💡 Enhancements 💡
webhook
: Allow to run the operator without the OpenTelemetry CRDs present (#3568)
Skip registering the webhook and keep the operator working in case the OpenTelemetryCollector CRDs are not deployed.
🧰 Bug fixes 🧰
-
collector
: Fixes container port duplication for user-provided and operator inferred ports (#3950)
This patch improves container port collisions when the user defines additional ports in the CR.When ports are specified in the CR:
- If a port number from the CR matches a port inferred from the config, the inferred port is removed
- If a port name from the CR matches an inferred port name, the inferred port is renamed to "port-{number}"
-
collector
: Prevent the operator from overriding the env vars defined by the user in the OpenTelemetryCollector spec. (#3963)
This change ensures that the operator does not override the environment variables defined by the user in the OpenTelemetryCollector spec.
It combines user-defined environment variables with automatically inferred ones, giving precedence to user-defined ones. -
opamp
: Fix config loading priority (#3928) -
target allocator
: Fix config loading priority (#3928) -
collector
: Set thestatusReplicas
field for theDaemonSet
(#3930) -
collector
: Fix OpenShift internal collector metrics dashboards to use_total
suffix (#3994)
The following settings (or missing metrics configuration since 0.119.0) exposes metrics with_total
suffix:service: telemetry: metrics: readers: - pull: exporter: prometheus: host: '0.0.0.0' port: 8888
The following settings exposes metrics without
_total
suffix:service: telemetry: address: 0.0.0.0:8888
-
targetallocator
: Do not override the collector namespace from the config file if the environment variable is not set. (#3976)
Components
Release v0.124.0
0.124.0
💡 Enhancements 💡
collector
: Re-try failed upgrades (#3515)
The upgrade process runs now in the reconcile loop.
In case of an error, the operator re-tries the upgrade with exponential backoff.
Components
Release v0.123.0
0.123.0
💡 Enhancements 💡
opamp
: Enables the OpAMP Bridge to act as a read-only proxy for effective configuration and health reporting. (#3823)