github.com/open-telemetry/opentelemetry-operator
v1.51.0
#938 most downloaded on Go modules
open-telemetry/opentelemetry-operator
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships on a steady schedule
a new release about every 8 days
Most releases are documented
notes for 132 of 155 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
1385 releases · first in 2019
818 releases in the last 12 months
see the full history below
Release timeline
1385 releases · Apr 2022 to Aug 2026Releases
latest 60 of 1385-
v1.51.018 May 2022Nothing published for this version
-
v0.158.1-0.20260821201828-be8944414a8721 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260821100417-b0b1c603d2ff21 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260820183654-f3db1e21b81420 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260820102632-a8d7487cad1b20 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260819214334-93c1a920465219 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260819124459-37b1887acc9919 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260818152329-0cd389665ed718 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260818094538-3bd0786914e718 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260817173538-083d8a3c695617 Aug 2026 pre-releaseNothing published for this version
-
v0.158.1-0.20260817132253-7d544076881317 Aug 2026 pre-releaseNothing published for this version
-
v0.158.017 Aug 2026Release notes
Open source →0.158.0
💡 Enhancements 💡
-
operator, collector, target allocator: Enable operator, collector, target allocator network policies by default. (#5394)
Feature gateoperator.networkpolicyandoperand.networkpolicyare promoted to beta, and enabled by default.
These feature gates create network policies for the operator and operand components. -
auto-instrumentation: Apache and nginx instrumentations forward Spec env vars to attach init containers so kubelet can expand $(VAR) references in exporter endpoints. (#5333) -
collector: promote the operator.collector.usedefaulttelemetryshape feature gate to stable, so the operator-injected Prometheus telemetry reader always uses collector defaults for without_type_suffix, without_units, and without_scope_info (#5075)
The gate is now stable and can no longer be disabled. Users wanting the
pre-v0.154.0 metric name shape should explicitly set
without_type_suffix,without_units, andwithout_scope_infotofalse
in their collector configuration. The gate will be removed in a future release. -
collector: moves operator.golang.flags to stable setting GOMEMLIMIT and GOMAXPROCS automatically (#5455)
🧰 Bug fixes 🧰
collector: Fix the automatic-upgrade routine binding two Prometheus readers to the same port when a collector already usesservice.telemetry.metrics.readers. (#5416)
When an OpenTelemetryCollector already configuredservice.telemetry.metrics.readers
(added by earlier defaulting), the automatic version-upgrade routine still backfilled the
older, deprecatedaddressfield for it. The 0.122.0 upgrade step then migratedaddress
into a new reader, leaving two readers bound to the same host:port. The collector then
failed to start with "address already in use". The 0.111.0 step now skips backfilling
addresswhenreadersis already configured, and the 0.122.0 step now skips adding a
reader foraddressif an equivalent one already exists.collector: Add PersistentVolume and PersistentVolumeClaim RBAC rules for k8s_cluster receiver automatic RBAC generation. (#5421)auto-instrumentation: DefaultOTEL_METRICS_EXPORTERtootlpfor Node.js auto-instrumentation so metrics are exported without extra configuration. (#3768)
The Node.js SDK only initializes its metrics pipeline when a metric reader is configured, and the
webhook was not setting one. As a result, metrics silently stopped being exported for anyone relying
on the previous default behavior. The webhook now setsOTEL_METRICS_EXPORTER=otlpby default,
matching the existing behavior for Python auto-instrumentation, unless the user already set it.
Components
Release notes
Open source →💡 Enhancements 💡
-
operator, collector, target allocator: Enable operator, collector, target allocator network policies by default. (#5394) Feature gateoperator.networkpolicyandoperand.networkpolicyare promoted to beta, and enabled by default. These feature gates create network policies for the operator and operand components. -
auto-instrumentation: Apache and nginx instrumentations forward Spec env vars to attach init containers so kubelet can expand $(VAR) references in exporter endpoints. (#5333) -
collector: promote the operator.collector.usedefaulttelemetryshape feature gate to stable, so the operator-injected Prometheus telemetry reader always uses collector defaults for without_type_suffix, without_units, and without_scope_info (#5075) The gate is now stable and can no longer be disabled. Users wanting the pre-v0.154.0 metric name shape should explicitly setwithout_type_suffix,without_units, andwithout_scope_infotofalsein their collector configuration. The gate will be removed in a future release. -
collector: moves operator.golang.flags to stable setting GOMEMLIMIT and GOMAXPROCS automatically (#5455)
🧰 Bug fixes 🧰
collector: Fix the automatic-upgrade routine binding two Prometheus readers to the same port when a collector already usesservice.telemetry.metrics.readers. (#5416) When an OpenTelemetryCollector already configuredservice.telemetry.metrics.readers(added by earlier defaulting), the automatic version-upgrade routine still backfilled the older, deprecatedaddressfield for it. The 0.122.0 upgrade step then migratedaddressinto a new reader, leaving two readers bound to the same host:port. The collector then failed to start with "address already in use". The 0.111.0 step now skips backfillingaddresswhenreadersis already configured, and the 0.122.0 step now skips adding a reader foraddressif an equivalent one already exists.collector: Add PersistentVolume and PersistentVolumeClaim RBAC rules for k8s_cluster receiver automatic RBAC generation. (#5421)auto-instrumentation: DefaultOTEL_METRICS_EXPORTERtootlpfor Node.js auto-instrumentation so metrics are exported without extra configuration. (#3768) The Node.js SDK only initializes its metrics pipeline when a metric reader is configured, and the webhook was not setting one. As a result, metrics silently stopped being exported for anyone relying on the previous default behavior. The webhook now setsOTEL_METRICS_EXPORTER=otlpby default, matching the existing behavior for Python auto-instrumentation, unless the user already set it.
Components
-
-
v0.157.1-0.20260815145427-1879f605779115 Aug 2026 pre-releaseNothing published for this version
-
v0.157.1-0.20260814174834-a1554cbf460314 Aug 2026 pre-releaseNothing published for this version
-
v0.157.1-0.20260814115823-e93ff3fa552f14 Aug 2026 pre-releaseNothing published for this version
-
v0.157.1-0.20260814094103-7ab95b7d63ca14 Aug 2026 pre-releaseNothing published for this version
-
v0.157.1-0.20260813210346-9d073854d38a13 Aug 2026 pre-releaseNothing published for this version
-
v0.157.013 Aug 2026Release notes
Open source →0.157.0
💡 Enhancements 💡
-
target allocator: Allow enabling mTLS between the target allocator and the collector using user-provided certificate Secrets, without requiring cert-manager. (#3982)
Whenspec.targetAllocator.mtls.useCertManageris set tofalse, the newmtls.tlsblock
references user-provided certificates. The CA certificate may be sourced from either a Secret or a
ConfigMap (certificateAuthorityCertificate.secret/.configMap). The target allocator's server
certificate and the collector's client certificate each reference their certificate and private key
independently, so the certificate and key may live in different Secrets. Data keys default to
tls.crt,tls.keyandca.crtand can be overridden per reference. The CA reference is required
in this mode. -
operator: Add support for Kubernetes 1.36 (#5354)
🧰 Bug fixes 🧰
target allocator: Seed Prometheus's scrape labels (job,__scheme__,__metrics_path__,__scrape_interval__,__scrape_timeout__,__param_*) before relabel filtering, so keep/drop rules referencing them make the same decisions as Prometheus instead of silently dropping or over-allocating targets (#5246)
The seeded labels also feed the target identity hash, matching Prometheus's post-relabel label partition more closely. With therelabel-configfilter strategy enabled, existing targets are re-allocated once on upgrade because their hashes change. The served (pre-relabel) target labels are unchanged.
Components
- OpenTelemetry Collector - v0.157.0
- OpenTelemetry Contrib - v0.157.0
- Java auto-instrumentation - v2.30.0
- .NET auto-instrumentation - v1.16.0
- Node.JS - v0.78.0
- Python - v0.64b0
- Go - v0.24.0
- ApacheHTTPD - 1.0.4
- Nginx - 1.0.4
0.157.0
💡 Enhancements 💡
auto-instrumentation: Theautoinstrumentation-dotnetimage now bundles the correct native profiler for the platform it is pulled for, fixing arm64 support (the image was already published for arm64 but always contained amd64 binaries). (#3270)operator-opamp-bridge: Adds support for the OpAMP capability AcceptsRestartCommand to the operator's OpAMP bridge, allowing the operator to restart the collector when requested by an OpAMP server. (#5306)operator-opamp-bridge: Add anopentelemetry.io/opamp.bridge.modenon-identifying OpAMP AgentDescription attribute so servers can distinguish operator and standalone bridge clients. (#5423)operator-opamp-bridge: Report the operator-opamp-bridge's own build version asservice.versionin its OpAMP AgentDescription, instead of always sending an empty string. (#5360)collector: Add support for settingsessionAffinityandsessionAffinityConfigon the Services created for the Collector (#4455)target allocator: Support exporting the TargetAllocator's self-telemetry metrics via OTLP, in addition to the Prometheus /metrics endpoint. (#5047)
Configure it underspec.targetAllocator.telemetry.metrics.otlp(OpenTelemetryCollector CR) or
spec.telemetry.metrics.otlp(TargetAllocator CR), with endpoint, protocol (grpc/http), temporality,
headers, TLS and export interval/timeout. Metrics registered directly on the Prometheus registry
(Prometheus service discovery, Go runtime and process collectors) are bridged into the OTLP export
so the Prometheus endpoint and OTLP expose the same metric set.
🧰 Bug fixes 🧰
-
cluster-observability: Fix dependencies required by the bundled agent and cluster Collector configurations (#3821, #3818)
Follow-ups to the initial ClusterObservability framework so generated
Collectors start cleanly across supported distributions:- Use K8s Collector distribution for the agent and cluster Collectors,
defaulting to the operator's Collector version and supporting the
--clusterobservability-collector-imageoverride. Apply matching version
labels and canonical component IDs. - Inject
K8S_NODE_NAME, which the bundledkubelet_statsreceiver uses
for its endpoint. - Report cluster Collector readiness from its StatefulSet so
ClusterObservabilitydoes not remainPendingafter the workload is ready. - Mount the host root at
/hostfsforhost_metricsand exclude virtual
and container-runtime filesystems that cannot be scraped reliably. - On OpenShift, run the agent under the generated
spc_tSCC sofile_log
can read root-owned container logs under/var/log/pods. - On OpenShift, verify kubelet TLS with the platform serving CA.
- Point generated
Instrumentationresources to the agent's OTLP/HTTP port
because auto-instrumentation SDKs commonly usehttp/protobuf.
- Use K8s Collector distribution for the agent and cluster Collectors,
-
collector: Fix OpenShift collector dashboard (#5342)
The collector v0.155.0 renamed the deprecatedotelcol_processor_accepted_*/dropped_*/refused_*metrics
tootelcol_processor_memory_limiter_*(open-telemetry/opentelemetry-collector#11203).
The dashboard queries have been updated to use the new metric names. -
collector: Register the snake-case spellings of several renamed receivers (kubelet_stats,k8s_objects,resource_detection,fluent_forward,tcp_log,udp_log,ssh_check,cloud_foundry,http_check,flink_metrics) alongside their original spellings when generating RBAC and service ports from a Collector CR, so either spelling produces the same result. (#5317)
These components were renamed to snake_case in opentelemetry-collector-contrib
(#47957 kubeletstats, #47440 k8sobjects, #48525 resourcedetection, #47930
fluentforward, #47369 tcplog, #47370 udplog, #47515 sshcheck, #47932
cloudfoundry, #47505 httpcheck, #47929 flinkmetrics) while keeping the
original names accepted, but the operator only recognized one spelling per
component, so configs using the other spelling got no RBAC/ports or the
wrong service port name. This extends the k8s_attributes fix (#4983) to
the remaining renamed components, and makesNewScraperParseraccept
aliases so future renames of this kind are a one-line fix. -
target allocator: Fix collector mtls with a TargetAllocator CR (#4297)
This only affected collectors associated with a TargetAllocator CR whose name differs from the
collector's, e.g. via theopentelemetry.io/target-allocatorlabel, causing them to address the
wrong hostname (and TLS certificate) once mTLS was enabled. -
target allocator: Refresh stale Prometheus meta labels (e.g.__meta_kubernetes_pod_name) on rediscovered targets whose address is unchanged (#4839)
Target identity is deliberately hashed without meta labels, since Prometheus discards them after
relabeling. But because the allocator's target map is keyed by that same hash, a rediscovered
target whose address is unchanged (e.g. a hostNetwork DaemonSet pod after a restart) was never
recognized as changed, so its stale meta labels persisted until target-allocator itself restarted. -
collector: Fix operator crash on startup when Gateway API CRDs are not installed by moving gatewayv1 scheme registration to be gated on autodetect result. (#5357) -
auto-instrumentation: Apply security context to Java extension init containers (#5335)
Extension init containers injected alongside the Java agent were not receiving
a security context. This affected both the explicitspec.initContainerSecurityContext
field on the Instrumentation CR and the fallback behaviour that inherits the
security context from the instrumented application container. Only the main
opentelemetry-auto-instrumentation-javainit container was having its security
context set; extension containers were always created with a nil security context.
This caused admission failures on clusters with policies that require all
containers to drop capabilities or disallow privilege escalation (e.g. OPA
Gatekeeper). The security context is now applied to all Java-related init
containers at construction time. -
target allocator: Propagate the TargetAllocator CR's metadata annotations to all resources created for it, and restrictpodAnnotationsto the pod template (#4393)
This aligns the TargetAllocator with the OpenTelemetryCollector behavior: CR metadata annotations now land
(respecting the annotations filter) on the Deployment, Service, ConfigMap, ServiceAccount, ServiceMonitor,
PodDisruptionBudget and NetworkPolicy, whilepodAnnotationsis no longer copied to the NetworkPolicy and
PodDisruptionBudget.
Components
Release notes
Open source →💡 Enhancements 💡
-
target allocator: Allow enabling mTLS between the target allocator and the collector using user-provided certificate Secrets, without requiring cert-manager. (#3982) Whenspec.targetAllocator.mtls.useCertManageris set tofalse, the newmtls.tlsblock references user-provided certificates. The CA certificate may be sourced from either a Secret or a ConfigMap (certificateAuthorityCertificate.secret/.configMap). The target allocator's server certificate and the collector's client certificate each reference their certificate and private key independently, so the certificate and key may live in different Secrets. Data keys default totls.crt,tls.keyandca.crtand can be overridden per reference. The CA reference is required in this mode. -
operator: Add support for Kubernetes 1.36 (#5354)
🧰 Bug fixes 🧰
target allocator: Seed Prometheus's scrape labels (job,__scheme__,__metrics_path__,__scrape_interval__,__scrape_timeout__,__param_*) before relabel filtering, so keep/drop rules referencing them make the same decisions as Prometheus instead of silently dropping or over-allocating targets (#5246) The seeded labels also feed the target identity hash, matching Prometheus's post-relabel label partition more closely. With therelabel-configfilter strategy enabled, existing targets are re-allocated once on upgrade because their hashes change. The served (pre-relabel) target labels are unchanged.
Components
-
-
v0.156.1-0.20260812163558-330fbf057ee412 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260811105610-74e36674672911 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260810155402-fabb2a128c1310 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260809165719-e4ed52f6216909 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260807115644-907b5caccac807 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260806123515-79a17d5d7a2f06 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260805143212-2254097b73ee05 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260804092502-936faf56a92d04 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260803123719-a758e509fcd103 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260803105410-109b39f8344c03 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260803080718-2c5fd73c494103 Aug 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260731181045-9bb3f843348331 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260731144754-f9ae0137d13831 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260731090847-bcfe3ceeb3d231 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260730112338-e388eb2526dc30 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260730071213-9519680b6aef30 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260729235237-072856ca509a29 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260729170532-79811c7c08c829 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260729072934-adc74063616829 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260728135434-d6c19483748d28 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260728130517-854ba729d65328 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260728095516-37d0509cf1b428 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260727234502-211379b3f12727 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260727171752-74f319e3c58f27 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260725165524-7a41f4db590225 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260725123241-47a7523628d125 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260724172158-78ecbf3e376324 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260723160812-371e3f0c8d0c23 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260722173933-19eb1650be8222 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260722113640-a17d1aec9e2e22 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260721192716-52446daad5a621 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260721150341-c0b22a25000b21 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260721093114-fa289967bccd21 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260720182131-690960f3ef9720 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260720165430-1e2162ca375620 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260720143758-812ad71c280220 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260720132518-1be616f9e03620 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260720100730-a8c740a51f7a20 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260717185036-3e2b0ee3a54a17 Jul 2026 pre-releaseNothing published for this version
-
v0.156.1-0.20260715161932-b48579f07b1215 Jul 2026 pre-releaseNothing published for this version
-
v0.156.013 Jul 2026Release notes
Open source →0.156.0
🧰 Bug fixes 🧰
collector: Honorspec.observability.metrics.disablePrometheusAnnotations: trueon update by removing the operator-stamped prometheus.io annotations from the pod template, not just stopping new ones from being added. (#5043)
Previously the pod-template mutate path preserved any annotation that
existed on the current resource but was absent from the desired render,
so toggling disablePrometheusAnnotations from false to true on an
existing OpenTelemetryCollector left the prometheus.io/scrape, port,
and path annotations stuck on the rolled pods. The operator now stamps
an ownership marker (operator.opentelemetry.io/prometheus-annotations-added)
whenever it adds one of the default prometheus.io/* annotations, and
the mutate path strips those annotations only when the marker is
present on the existing pod template. This preserves prometheus.io/*
annotations the user set out of band on the same collector.
Components
Release notes
Open source →🧰 Bug fixes 🧰
collector: Honorspec.observability.metrics.disablePrometheusAnnotations: trueon update by removing the operator-stamped prometheus.io annotations from the pod template, not just stopping new ones from being added. (#5043) Previously the pod-template mutate path preserved any annotation that existed on the current resource but was absent from the desired render, so toggling disablePrometheusAnnotations from false to true on an existing OpenTelemetryCollector left the prometheus.io/scrape, port, and path annotations stuck on the rolled pods. The operator now stamps an ownership marker (operator.opentelemetry.io/prometheus-annotations-added) whenever it adds one of the default prometheus.io/* annotations, and the mutate path strips those annotations only when the marker is present on the existing pod template. This preserves prometheus.io/* annotations the user set out of band on the same collector.
Components
-
v0.155.1-0.20260713194455-543148991f8f13 Jul 2026 pre-releaseNothing published for this version