Skip to content

Releases: open-telemetry/opentelemetry-operator

Release v0.139.0

07 Nov 15:16
9657056

Choose a tag to compare

0.139.0

💡 Enhancements 💡

  • operator: Promote the operator.sidecarcontainers.native feature 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 version 0.140.0.

  • collector: Promote the operator.collector.default.config feature gate to Stable (#4453)

Components

Release v0.138.0

31 Oct 18:30
063eb8d

Choose a tag to compare

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 volumeSizeLimit field is deprecated.
    • Use spec.<lang>.volume.size instead of spec.<lang>.volumeSizeLimit.
    • The validating webhook emits a warning when volumeSizeLimit is used.

🧰 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 helper GetInitialReplicas to GetDesiredReplicas to reflect reconcile-time behavior.

Components

💡 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.port is set.
    • Defaults remain 0.0.0.0:8888 when neither address nor a Prometheus reader is configured.
  • 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

20 Oct 13:41
890031a

Choose a tag to compare

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.port is set.
    • Defaults remain 0.0.0.0:8888 when neither address nor a Prometheus reader is configured.
  • 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

30 Sep 07:11
75d4555

Choose a tag to compare

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:
    1. upgrade failure because the default stateful serviceName changed
    2. the statefulset serviceName field is mutable, therefore a change of the collector serviceName field is not applied

Components

Release v0.135.0

16 Sep 16:58
a7855fa

Choose a tag to compare

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

12 Sep 15:43
185a9e9

Choose a tag to compare

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

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 gate pdata.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

02 Sep 15:19
bec1a4d

Choose a tag to compare

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 port 8080 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 annotation cert-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

04 Aug 12:38
6c41eeb

Choose a tag to compare

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

04 Jul 14:50
546053d

Choose a tag to compare

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 Kubernetes 1.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 invalid operator.observability.prometheus feature flag references (#4159)
    Fixed operator installation failure caused by references to the non-existent operator.observability.prometheus feature flag.
    Removed the flag from the bundle and cleaned up API and documentation references.

Components

Release v0.127.0

04 Jun 13:25
290139b

Choose a tag to compare

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 🧰

Components