This Splunk OpenTelemetry Collector for Kubernetes release adopts the Splunk OpenTelemetry Collector v0.150.0.
🛑 Breaking changes 🛑
chart: Default API and ingest endpoints changed from*.signalfx.comto*.observability.splunkcloud.com(#2364)
The default endpoints have been updated as follows:https://ingest.<realm>.signalfx.com→https://ingest.<realm>.observability.splunkcloud.comhttps://api.<realm>.signalfx.com→https://api.<realm>.observability.splunkcloud.com
The new endpoints resolve to different IP addresses. Review the
domain transition guide
for the full list of network and security controls to update before upgrading,
or the collector will fail to send data.
To keep using the legacy*.signalfx.comendpoints, set these values explicitly:
splunkObservability: ingestUrl: "https://ingest.<realm>.signalfx.com" apiUrl: "https://api.<realm>.signalfx.com"
💡 Enhancements 💡
agent: AddmaxUnmatchedBatchSizeoption tologsCollection.containers.multilineConfigs(#2379)
The chart now supportsmaxUnmatchedBatchSizeinmultilineConfigs, which controls how many
consecutive lines not matchingfirstEntryRegexare batched into a single log record.gateway: Add topologySpreadConstraints support for gateway deployment (#2361)
The gateway deployment now supportsgateway.topologySpreadConstraintsto control how
gateway pods are distributed across topology domains (e.g., availability zones). When
combined withgateway.service.trafficDistribution(PreferSameZoneon Kubernetes 1.35+,
orPreferCloseon older versions), this enables zone-aware routing where clients prefer
sending traffic to gateways in the same zone. Together, these options ensure gateways are
evenly spread across zones while minimizing cross-AZ network traffic and costs.
🧰 Bug fixes 🧰
agent: Fix histogram bucket count forkubeproxy_network_programming_duration_secondsmetric (#2328)
Splunk Observability Cloud has a limit of 32 buckets for histograms. By default this histogram
has more than 32 buckets, so the config will now merge buckets to meet the required limit
to avoid this metric being dropped entirely. This change is relevant when both the
useControlPlaneMetricsHistogramDatafeature gate andagent.controlPlaneMetrics.proxy
config option are both enabled.chart: Add probes and scrapeconfigs RBAC permissions to Target Allocator ClusterRole (#2359)
The Target Allocator ClusterRole was missing permissions forprobesandscrapeconfigs
resources in themonitoring.coreos.comAPI group. This caused the allocator to fail with
forbidden errors when attempting to list and watch these resources.clusterReceiver: Remove resourcedetection processor from cluster-scoped event and object pipelines (#2369)
The cluster receiver'slogs(k8s_events),logs/objects, andlogs/eventspipelines
previously used theresourcedetectionprocessor, which added host and
cloud-provider attributes (host.id, host.name, cloud.provider, cloud.platform,
cloud.account.id, cloud.region, etc.) from the cluster receiver pod itself.
These host-level attributes were misleading because cluster-scoped events and objects are not
tied to any single host; they should reflect the cluster. These pipelines now only addk8s.cluster.name.
Ahost.nameresource attribute is still set to the node name of the cluster receiver pod (K8S_NODE_NAME)
for use as the Splunk HEChostfield.gateway: Addprofilingto gateway OTLP portenabled_forlists (#2365)
The gateway OTLP ports (4317, 4318) were missingprofilingin theirenabled_for
lists, unlike the agent ports which already included it. This meant the profiling signal
alone could not enable the gateway OTLP ports.operator: Respect user-defined SPLUNK_PROFILER_ENABLED and SPLUNK_PROFILER_MEMORY_ENABLED ininstrumentation.spec.env(#2365)
WhensplunkObservability.profilingEnabledis true, the chart auto-injects
SPLUNK_PROFILER_ENABLED=trueandSPLUNK_PROFILER_MEMORY_ENABLED=trueinto
the Instrumentation CR. Previously, setting these to "false" in
instrumentation.spec.envto globally disable profiling while keeping the
pipeline active was silently overridden. The chart now correctly honors
user-defined values and skips injection when they are already present.