Install EDR on Kubernetes
The influxdb3-edr-adjunct Helm chart deploys a separate EDR agent alongside an unmodified InfluxDB 3 Enterprise Helm release.
The sender reads the source’s object store directly.
It does not inject a sidecar or change the server release.
The agent stores its cursor and journals in its own object-store location, separate from source data.
It needs no state PersistentVolumeClaim (PVC).
Prerequisites
- An InfluxDB 3 Enterprise source on a supported server line, using the upgraded storage engine and S3, Google Cloud Storage, or Azure Blob Storage.
- The EDR 1.0.0 image in a registry your Kubernetes nodes can pull from.
Select the
amd64orarm64image for your nodes. - The EDR Helm bundle
edr-helm-v1.0.0.tgzand its example values files. Contact the InfluxData Sales team for artifacts and deployment coordination. - Durable agent state storage and credentials that can access it. Senders also need source object-store access.
- A destination write token and a shared authentication token for each sender/receiver link.
Load the delivered image archive before pushing the required architecture’s image to your registry:
docker load --input edr-images-v1.0.0.tar.gzUse image tag 1.0.0-pro7dd361197e-amd64 or 1.0.0-pro7dd361197e-arm64.
Set image.repository to your registry’s image path in each values file.
Choose a role
role | Operation | Required configuration |
|---|---|---|
sender | Reads a source store and sends data downstream. | source, downstream, and state |
receiver | Accepts replication and writes to a destination server. | receiver and state |
combined | Receives data into a local server and sends that server’s data onward. | source, downstream, receiver, and state |
A sender-to-receiver pipeline uses two releases of the EDR chart.
Copy the corresponding example from the delivered chart into your own values file.
Keep the chart’s values.yaml as a reference.
Extract the archive to access its examples:
tar --extract --gzip --file edr-helm-v1.0.0.tgzThe S3 examples below assume the Enterprise releases are named idb-src and idb-dst in the same namespace.
Replace bucket names, registry paths, and Secret names for your deployment.
Chart defaults assert idempotentWrites: true and set concurrentSends: 8.
Use these defaults only for duplicate-safe workloads without overwrites.
For workloads with overwrites, set idempotentWrites: false, concurrentSends: 1, and historicFill: none.
See Performance vs. correctness.
Deploy a sender
Create my-sender.yaml:
role: sender
image:
repository: REGISTRY/edr
tag: "1.0.0-pro7dd361197e-amd64"
state:
location: "s3://edr-state/idb-src"
s3:
existingSecret: idb-src-influxdb3-enterprise-s3
source:
releaseName: idb-src
objectStore: s3
s3:
bucket: influxdb3-enterprise-src
tokenStore:
existingSecret: edrs-tokens
downstream:
address: "http://edrr-edr:9090"
authToken: downstream-auth
idempotentWrites: false
concurrentSends: 1
historicFill: noneCreate the edrs-tokens Kubernetes Secret with a downstream-auth key containing the shared link token.
The s3.existingSecret must contain access-key-id and secret-access-key keys.
Its credentials must access both the source bucket and agent state location.
Install from the delivered chart archive:
helm install edrs ./edr-helm-v1.0.0.tgz --values my-sender.yamlThe agent’s node name is edrs-edr.
The receiver must use this name in its upstream list.
Deploy a receiver
Create my-receiver.yaml:
role: receiver
image:
repository: REGISTRY/edr
tag: "1.0.0-pro7dd361197e-amd64"
state:
location: "s3://edr-state/idb-dst"
s3:
existingSecret: idb-dst-influxdb3-enterprise-s3
tokenStore:
existingSecret: edrr-link-tokens
extraSecrets:
- idb-dst-admin-token
receiver:
writeEndpoint: "http://idb-dst-influxdb3-enterprise-ingester:8181"
upstreams:
- name: edrs-edr
authToken: link-auth
writeToken: admin-token.jsonCreate edrr-link-tokens with a link-auth key whose value equals the sender’s downstream-auth token.
Use the actual Secret configured by the destination Enterprise release’s security.auth.adminToken.existingSecret in place of idb-dst-admin-token.
Its admin-token.json key mounts unchanged into the token directory.
Alternatively, supply a dedicated write token as its own file in a projected Secret and use that file name as writeToken.
The receiver needs no source store, but it needs credentials for its own state location.
helm install edrr ./edr-helm-v1.0.0.tgz --values my-receiver.yamlDeploy a combined relay
Start from the chart’s examples/values-combined.yaml.
Set role: combined and configure both facets in one values file:
- Point
sourceat the relay’s own Enterprise store. - Point
downstream.addressat the next receiver. - Point
receiver.writeEndpointat the relay’s own Enterprise write endpoint. - Add each incoming sender to
receiver.upstreamswith its node name and token references. - Set
state.locationto a separate durable location for the relay agent. - Project all required incoming, outgoing, and write-token files through
tokenStore.existingSecretandtokenStore.extraSecrets.
helm install edrm ./edr-helm-v1.0.0.tgz --values my-combined.yamlObject stores and token Secrets
S3, Google Cloud Storage, and Azure Blob Storage support both source reads and agent state.
Use s3://, gs://, or az:// for state.location.
For sources, the chart uses source.objectStore: s3, gcs, or azure; this differs from the binary’s --object-store-type google spelling.
| Provider | Source values | Credential values |
|---|---|---|
| S3 | source.s3.bucket | s3.existingSecret with access-key-id and secret-access-key |
| Google Cloud Storage | source.gcs.bucket | gcs.existingSecret with service-account.json |
| Azure Blob Storage | source.azure.container | azure.storageAccount and azure.existingSecret with azure-storage-account-key |
Where configured, platform identity can supply credentials instead of an explicit credential Secret. See the delivered chart’s values reference for provider settings and endpoints.
The chart projects token Secrets as files at /etc/influxdb3-edr/tokens and sets INFLUXDB3_EDR_TOKEN_STORE.
File names must match the configuration’s token references.
The volume uses no subPath mount.
Once Kubernetes updates the projected files, the agent reads rotated tokens on the next use without a restart.
A Helm upgrade that changes chart-rendered config or token values rolls the pod through checksum annotations.
See Manage tokens.
Operations and limitations
- Run exactly one replica per agent.
The chart fixes
replicas: 1and usesstrategy: Recreateto avoid concurrent agents sharing state. Do not scale the Deployment. - Keep the same
state.locationwhen replacing or restarting a Deployment. Its cursor and journals survive pod deletion in object storage. - Apply configuration changes with
helm upgrade; changes such as a downstream address require a restart. - The
<release>-edrClusterIP Service exposes replication on port 9090 and observability on port 9091 by default. Scrape the observability port for metrics. - Source and state use one credential set per process. Keep both in the same provider and account.
- S3 source buckets are bucket-rooted; source bucket prefixes are not supported. Agent state can use its own prefix.
- File-backed source storage with a ReadWriteMany PVC is for development only. Use object storage for production.
Was this page helpful?
Thank you for your feedback!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB 3 Enterprise and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support. Customers using a trial license can email trial@influxdata.com for assistance.