This guide walks you through upgrading your k8s-infra Helm chart to version 0.16.0, which changes the default OTLP exporter from gRPC to HTTP.
What's New in v0.16.0
- OTLP/HTTP is the default exporter.
presets.otlphttpExporter.enablednow defaults totrueandpresets.otlpExporter.enabledtofalse. OTLP/HTTP works more reliably across load balancers, ingresses, and proxies than gRPC, and is now the recommended protocol for sending telemetry to SigNoz Cloud and self-hosted SigNoz. - Autogenerated endpoint port updated. When
otelCollectorEndpointis not set (typical when k8s-infra is installed as a sub-chart ofsignoz), the chart now resolves to the OTLP/HTTP port4318instead of4317.
Breaking Change
If you set otelCollectorEndpoint to a gRPC endpoint (e.g., <host>:4317 or ingest.<region>.signoz.cloud:443 without https://), the chart will now send OTLP/HTTP to that endpoint and the export will fail. You must either update the endpoint to OTLP/HTTP, or explicitly opt back into gRPC.
Prerequisites
- A SigNoz backend (SigNoz Cloud or self-hosted) to receive OpenTelemetry data
- K8s-infra OpenTelemetry collection agent installed in your Kubernetes Cluster
- A backup of your current k8s-infra Helm chart configuration file (usually
values.yaml)
Upgrade Process
Pick the scenario that matches your current setup.
Scenario 1: Custom otelCollectorEndpoint (SigNoz Cloud or self-hosted)
If you set otelCollectorEndpoint explicitly, you must update it to the OTLP/HTTP endpoint.
Step 1: Update Helm Repository
helm repo update signoz
Step 2: Update Your Values File
For SigNoz Cloud:
- otelCollectorEndpoint: ingest.<region>.signoz.cloud:443
+ otelCollectorEndpoint: https://ingest.<region>.signoz.cloud:443
For self-hosted SigNoz:
- otelCollectorEndpoint: <IP-or-Endpoint-of-SigNoz-OtelCollector>:4317
+ otelCollectorEndpoint: http://<IP-or-Endpoint-of-SigNoz-OtelCollector>:4318
If you previously set the exporter presets explicitly, update them too:
presets:
- otlpExporter:
- enabled: true
+ otlphttpExporter:
+ enabled: true
Step 3: Run the Upgrade
helm upgrade <RELEASE_NAME> signoz/k8s-infra \
-n <NAMESPACE> \
-f your-values.yaml
Step 4: Verify the Upgrade
kubectl get pods -n <NAMESPACE> -l app.kubernetes.io/name=k8s-infra
kubectl logs -n <NAMESPACE> -l app.kubernetes.io/component=otel-agent --tail=50
Confirm telemetry is flowing in SigNoz under the cluster name you configured.
Scenario 2: Keep using OTLP/gRPC
If you can't change the endpoint (firewall rules, existing infra), or you prefer gRPC, opt back into it explicitly. gRPC has no chart-version requirement and will continue to work.
presets:
otlpExporter:
enabled: true
otlphttpExporter:
enabled: false
Keep your existing otelCollectorEndpoint (<host>:4317) unchanged.
Scenario 3: Sub-chart of signoz with no custom endpoint
If you installed k8s-infra as a sub-chart of the signoz chart and did not set otelCollectorEndpoint, no configuration change is required — the autogenerated endpoint now points at port 4318, which the SigNoz collector already exposes.
Step 1: Update Helm Repository
helm repo update signoz
Step 2: Run the Upgrade
helm upgrade <RELEASE_NAME> signoz/signoz \
-n <NAMESPACE> \
-f your-values.yaml
Step 3: Verify the Upgrade
kubectl get pods -n <NAMESPACE> -l app.kubernetes.io/name=k8s-infra
kubectl logs -n <NAMESPACE> -l app.kubernetes.io/component=otel-agent --tail=50
All pods should be Running. The logs should be free of connection refused or unsupported protocol errors from the exporter.
Troubleshooting
Exporter logs show connection refused or unsupported protocol
The endpoint is still pointing at a gRPC port (typically :4317). Update otelCollectorEndpoint to the OTLP/HTTP form (https://ingest.<region>.signoz.cloud:443 for SigNoz Cloud, or http://<host>:4318 for self-hosted) and re-run helm upgrade.
error converting YAML to JSON: unknown field "presets.otlphttpExporter"
The chart version is older than v0.14.0, when the preset was introduced. Run helm repo update signoz and upgrade. If you can't upgrade, follow Scenario 2 to keep using gRPC instead — the otlpExporter preset works on all versions.
Collector pods CrashLoopBackOff after upgrade
Check the pod logs (kubectl logs ... --previous) for a config validation error. Common causes: leftover tls: block under an otlphttp exporter with conflicting fields, or both otlpExporter and otlphttpExporter enabled simultaneously. Pick one exporter and re-run the upgrade.