Releases: open-telemetry/opentelemetry-operator
Release v0.139.0
0.139.0
💡 Enhancements 💡
-
operator: Promote theoperator.sidecarcontainers.nativefeature flag to Stable. (#4451)
By default, the operator will continue to use native sidecars on Kubernetes versions
newer than 1.29. This behaviour cannot be disabled.
The operator flag will be removed with the release of version0.140.0. -
collector: Promote theoperator.collector.default.configfeature gate to Stable (#4453)
Components
Release v0.138.0
0.138.0
💡 Enhancements 💡
collector: Migrate simple OpenTelemetryCollector validations from the webhook to CRD annotations so Kubernetes enforces them server-side. ()
🛑 Breaking changes 🛑
target allocator: Remove the operator.collector.targetallocatorcr feature flag (#2422)
This behavior has been enabled by default since version 0.127.0.
🚩 Deprecations 🚩
auto-instrumentation: Deprecate VolumeSizeLimit in the Instrumentation CRD (#3382)- The
volumeSizeLimitfield is deprecated. - Use
spec.<lang>.volume.sizeinstead ofspec.<lang>.volumeSizeLimit. - The validating webhook emits a warning when
volumeSizeLimitis used.
- The
🧰 Bug fixes 🧰
target allocator: Add missing TA ownership watches to cert-manager Certificate and Issuer (#4368)collector: Set the log level to 4 when default pdb is created. ()collector: Fix autoscaler not scaling above minReplicas; replicas now respect the scale subresource and never fall below autoscaler.minReplicas. (#4400) Also rename helperGetInitialReplicastoGetDesiredReplicasto reflect reconcile-time behavior.
Components
-
The flag can no longer be disabled. It will be completely removed in 0.138.0.
💡 Enhancements 💡
collector: Add logs when the Operator finds an issue during the unmarshall process for spec.service.telemetry section. (#4111)collector: Add spec.dnsPolicy field to the OpenTelemetryCollector to allow users to specify the DNS policy for the collector pods. (#4265)github action: Add link checking workflow to validate documentation (#3425)- Added ci-markdown-link.yml workflow using linkspector to check for broken links in markdown files
- Added .linkspector.yml configuration file
collector: add startup probe to the collector CRD (#4347)collector: Validate collector ports from the config to ensure they are within the valid range (1-65535). (#4399)- This change adds validation for collector ports specified in the configuration file.
- Ports must be within the range of 1 to 65535; otherwise, an error will be raised during CR creation.
- This helps prevent misconfigurations that could lead to runtime errors.
🧰 Bug fixes 🧰
-
collector: Respect telemetry metrics readers when deriving the internal metrics endpoint. (#4049, #4233)- Fixes monitoring Service and container port mismatches when
.spec.config.service.telemetry.metrics.readers[].pull.exporter.prometheus.portis set. - Defaults remain
0.0.0.0:8888when neither address nor a Prometheus reader is configured.
- Fixes monitoring Service and container port mismatches when
-
target allocator, opamp: Fix version not being updated after version upgrade. (#4378) -
target-allocator: Fixed potential duplicate scrape targets caused by Prometheus relabeling. (#3617) -
auto-instrumentation: Fix nginxCloneScriptTemplate for old shells (#3651)
Components
Release v0.137.0
0.137.0
🛑 Breaking changes 🛑
target allocator: Promote the operator.collector.targetallocatorcr feature flag to Stable (#2422)
The flag can no longer be disabled. It will be completely removed in 0.138.0.
💡 Enhancements 💡
collector: Add logs when the Operator finds an issue during the unmarshall process for spec.service.telemetry section. (#4111)collector: Add spec.dnsPolicy field to the OpenTelemetryCollector to allow users to specify the DNS policy for the collector pods. (#4265)github action: Add link checking workflow to validate documentation (#3425)- Added ci-markdown-link.yml workflow using linkspector to check for broken links in markdown files
- Added .linkspector.yml configuration file
collector: add startup probe to the collector CRD (#4347)collector: Validate collector ports from the config to ensure they are within the valid range (1-65535). (#4399)- This change adds validation for collector ports specified in the configuration file.
- Ports must be within the range of 1 to 65535; otherwise, an error will be raised during CR creation.
- This helps prevent misconfigurations that could lead to runtime errors.
🧰 Bug fixes 🧰
-
collector: Respect telemetry metrics readers when deriving the internal metrics endpoint. (#4049, #4233)- Fixes monitoring Service and container port mismatches when
.spec.config.service.telemetry.metrics.readers[].pull.exporter.prometheus.portis set. - Defaults remain
0.0.0.0:8888when neither address nor a Prometheus reader is configured.
- Fixes monitoring Service and container port mismatches when
-
target allocator, opamp: Fix version not being updated after version upgrade. (#4378) -
target-allocator: Fixed potential duplicate scrape targets caused by Prometheus relabeling. (#3617) -
auto-instrumentation: Fix nginxCloneScriptTemplate for old shells (#3651)
Components
Release v0.136.0
0.136.0
🧰 Bug fixes 🧰
target-allocator: Fixes the incorrect k8s version for the traffic distribution feature. (#4394)collector: Fix statefulset serviceName field change handling. (#4371)
The Operator 0.129.1 introduced a new feature which allows setting the serviceName of the collector statefulset (#4041).
This feature introduced two issues:- upgrade failure because the default stateful serviceName changed
- the statefulset serviceName field is mutable, therefore a change of the collector serviceName field is not applied
Components
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.useCustomProtoEncodingRelease 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 port8080and 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-fromfrom 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.33version. (#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.prometheusfeature flag references (#4159)
Fixed operator installation failure caused by references to the non-existentoperator.observability.prometheusfeature 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.targetallocatorcrcommand-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 OpenShiftOwnerReferencesPermissionEnforcementis 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)