tero-edge Helm chart deploys Edge as a DaemonSet, renders config.json
and policies.json into a ConfigMap, and (optionally) wires up HTTP policy sync
with API-key auth. The chart is published two ways — an OCI registry and a
classic HTTP Helm repository — pick whichever your tooling prefers.
Install
- OCI (GHCR)
- Helm repository (HTTP)
No List available versions:
helm repo add needed — reference the chart by its OCI URL:OCI support is built into Helm 3.8+. Older clients need
export HELM_EXPERIMENTAL_OCI=1.values.yaml
and every flag below behave the same regardless of which you choose.
Configure
Create avalues.yaml with the policy-sync connection and the service identity
the control plane uses to scope policies:
Pick the tab for your Datadog region — the upstreamUrl and metricsUrl change
per region; everything else is identical.
- US1
- US3
- US5
- EU1
- AP1
values.yaml
Authentication
Settingtero.url automatically configures the HTTP policy provider. Provide
the API key one of two ways — never both:
| Method | Values |
|---|---|
| Inline (chart-managed Secret) | tero.apiKey: <key> |
| Existing Secret | tero.existingSecret.name + tero.existingSecret.key |
Without
tero.url, Edge loads policies only from the local file provider — no
remote policy sync.Values
The keys you’ll touch most. For every chart value (image, scheduling, service account, ingress), see the chart’sREADME.md.
| Key | Default | Description |
|---|---|---|
tero.url | "" | Control plane base URL; setting it enables HTTP policy sync |
tero.apiKey | "" | Inline API key (chart creates the Secret) |
tero.existingSecret.name | "" | Name of a Secret you manage instead of tero.apiKey |
tero.existingSecret.key | api-key | Key within that Secret holding the API key |
config.upstreamUrl | https://agent-http-intake.logs.datadoghq.com | Logs intake endpoint (set per Datadog region) |
config.metricsUrl | https://api.datadoghq.com | Metrics endpoint (set per Datadog region) |
config.logLevel | info | Edge log level |
config.maxBodySize | 1048576 | Max request body in bytes |
config.maxConnections | 256 | Max concurrent connections; dominant memory cap (≈ maxConnections × maxBodySize) |
config.maxDecodedBytes | null | Post-decompression body ceiling; defaults to maxBodySize |
config.workerCount | null | httpz event-loop workers (null = default 1) |
config.threadPoolCount | null | httpz handler threads (null = default 32; scales per-thread memory) |
config.service.name | "" | Service name sent on policy sync (omitted if empty) |
config.service.namespace | "" | Service namespace sent on policy sync |
config.service.version | "" | Service version sent on policy sync |
config.service.resourceAttributes | [] | OTel resource attributes ({key, value}) sent on policy sync |
config.service.labels | [] | Free-form labels ({key, value}) sent on policy sync |
policiesJSON | [] | Local policies rendered to the file provider (raw JSON objects) |
Verify
200 OK from /_health confirms Edge is running. Edge’s own Prometheus
metrics are available at /_edge/metrics.
Upgrade and uninstall
config.* field, and Operations for probes,
resource sizing, and graceful shutdown.
Next Steps
Configuration
Full configuration reference
Operations
Probes, resources, and shutdown