0.149.0
💡 Enhancements 💡
-
collector: Add support for Gateway API HTTPRoute creation via OpenTelemetryCollector CR (#4361) -
operator: Added hostAliases support for OpenTelemetryCollector and TargetAllocator pods (#896) -
collector: Support RBAC generation fork8s_leader_electorextension (#4802)
Automatically generates a ClusterRole with permissions to manageleasesin thecoordination.k8s.ioAPI group for leader election among multiple collector replicas. -
collector: Add TLS security profile injection for health_check and jaeger_query extensions (#4871)
When a TLS profile is configured on the cluster, the operator now injects min_version and cipher_suites
into health_check and jaeger_query extension configs
🧰 Bug fixes 🧰
-
auto-instrumentation: Fix instrumentation init container security context (#4848) -
auto-instrumentation: Fix duplicated container names validation to allow the same container name across different language instrumentations. (#4357) -
operator: Fix AnyConfig.DeepCopyInto performing shallow copy, causing TargetAllocator Deployment infinite reconciliation loop (#4950)
AnyConfig.DeepCopyInto used maps.Copy which only copied top-level map entries, leaving nested
maps as shared references. When ApplyDefaults injected TLS profile settings (min_version) into
the collector's scrape config, it mutated the informer cache through the shared reference. This
caused the TargetAllocator config hash to alternate between two values on every reconciliation,
triggering an infinite Deployment update loop. The fix uses JSON round-tripping for a true deep copy. -
opamp: Fix nil pointer dereference in OpAMP Bridge when validating a remote collector config that omits theprocessorssection (#4970)
v1beta1.Config.Processorsis an optional*AnyConfig, butvalidateComponentsdereferenced it unconditionally.
When a remote config without aprocessorssection is applied through a bridge that hadcomponentsAllowed
configured, it panicked and pod restarted. The nil case is now skipped during validation. -
operator: Add missing RBAC permission for events.k8s.io API group (#4950)
The operator uses k8s.io/client-go/tools/events which targets the events.k8s.io API group,
but the ClusterRole only granted permission for the core API group. This caused "Server rejected
event" errors when recording events on managed resources in other namespaces. -
collector: Register thek8s_attributesspelling alongsidek8sattributeswhen generating RBAC from a Collector CR so either processor name produces the pods/replicasets/etc. permissions the processor needs. (#4922)
The underlying processor was renamed to snake_case in
open-telemetry/opentelemetry-collector-contrib#45901 while keeping the
original spelling accepted, but the operator only parsed the camel form
and emitted no RBAC for configs using the new name. -
collector: Generate RBAC for the k8s_attributes processor under its snake_case spelling, matching the camelCase k8sattributes it was renamed from. (#4922) -
collector: Expose prometheus receiver api_server port on collector Service and NetworkPolicy (#4949) -
auto-instrumentation, opamp, target allocator: Fix Env slice aliasing in Apache HTTPD, Nginx, OpAMP Bridge, and Target Allocator container builders when the spec slice has spare backing-array capacity (#4954) -
collector: Remove the kubebuilder default from the sts pod management policy field so it can be properlyomitempty(#4875)
This field should not be set on deployment or daemonset collectors.