# OpenTelemetry Collector: one OTLP log to a debug exporter Tested on 2026-10-09 with Helm **4.3.0**, Kubernetes **1.37.0**, official OpenTelemetry Collector chart **0.175.1**, and core Collector **0.161.0**, in a single-node Linux arm64 kind cluster. This is a disposable configuration and delivery fixture, not a production sizing or backend-reliability test. `values.yaml` enables only an OTLP/HTTP log pipeline. The debug exporter deliberately prints the synthetic log. No node log collection, cluster resource watching, instrumentation injection, traces, metrics or external backend is enabled. Never send sensitive or production data to this detailed debug configuration. ## Reproduce Set an explicit disposable kubeconfig and context, use a compatible verified Helm binary, and run these Bash commands from this example's directory. The namespace must not already exist. Inspect the selected cluster before creating it. ```bash fixture_config=/absolute/path/to/disposable-kubeconfig fixture_context=your-disposable-context helm4=/absolute/path/to/helm-v4.3.0 fixture_namespace=kubedex-otel-fixture k=(kubectl --kubeconfig "$fixture_config" --context "$fixture_context") h=(--kubeconfig "$fixture_config" --kube-context "$fixture_context" --namespace "$fixture_namespace") "${k[@]}" get nodes "${k[@]}" create namespace "$fixture_namespace" "$helm4" pull opentelemetry-collector --version 0.175.1 --repo https://open-telemetry.github.io/opentelemetry-helm-charts ``` The tested archive SHA-256 was `33996399f5d831193603f8a56ed46b7cd3f012eeb6df4d5046c5b560a554e21d`. Verify the downloaded archive, inspect the values and install: ```bash "$helm4" install otel-demo ./opentelemetry-collector-0.175.1.tgz "${h[@]}" --values values.yaml --wait --timeout 180s "${k[@]}" -n "$fixture_namespace" port-forward deployment/otel-demo-opentelemetry-collector 14318:4318 --address 127.0.0.1 ``` Keep the port-forward in a separate terminal. Send the included synthetic payload: ```bash curl --fail --header 'Content-Type: application/json' --data-binary @log-payload.json http://127.0.0.1:14318/v1/logs "${k[@]}" -n "$fixture_namespace" logs deployment/otel-demo-opentelemetry-collector ``` Observed HTTP status: **200**, body `{"partialSuccess":{}}`. Observed debug output included: ```text -> service.name: Str(kubedex-fixture) LogRecord #0 Body: Str(kubedex-otel-fixture-20261009) ``` The automated assertion found exactly one occurrence of that synthetic body in the captured logs. This single input does not establish at-most-once delivery under retry or failure. The bundled payload preserves the actual test timestamp; use fresh synthetic timestamps for a new experiment, especially with a backend that rejects old records. ## Why the values differ from defaults The chart requires an explicit image repository and executable. This fixture selects the core distribution, `otel/opentelemetry-collector`, and `otelcol`; it does not configure components available only in contributed distributions. The observed image digest is pinned. Unused default receivers, pipelines and ports are disabled. The chart's health-check extension remains because its probes use it. The memory limiter and batch processors remain connected to the log pipeline. Chart values are a versioned interface. Do not copy this file into an older chart and assume the same merge or component behavior. The fixture does not use the chart as a subchart; that is a separate values-merging scenario. ## Cleanup and limits Stop port-forwarding and delete only the namespace created for this example: ```bash "${k[@]}" delete namespace "$fixture_namespace" --wait=true --timeout=120s ``` The upstream chart package is retrieved from its maintainer repository and is not redistributed here. The full run output is in `observed-results.json`. Queue persistence, exporter authentication, TLS, backend outage, load, scaling and a production upgrade were not tested by this fixture.