elastic / elastic/docs-content
[Internal]: Add guide for deploying EDOT Collector via OpenTelemetry Operator (Agent & Gateway modes)
- Dominant language
- No language data
- Stars
- 47
- Forks
- 261
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 116
Description
### Description
Currently, the documentation for the Elastic Distribution of OpenTelemetry (EDOT) provides detailed Kubernetes setup guides for SDKs (e.g., [Java SDK on K8s](https://www.elastic.co/docs/reference/opentelemetry/edot-sdks/java/setup/k8s)), but lacks a dedicated overview for deploying the EDOT Collector using the OpenTelemetry Kubernetes Operator.
Users need official guidance on how to leverage the OpenTelemetryCollector Custom Resource (CR) specifically with Elastic's images and the elasticsearch exporter configurations.
## Content Suggestion
The new documentation section should include:
### 1. Image Reference
An overview of the official Elastic images for the collector:
Registry: docker.elastic.co/beats/elastic-otel-collector
FIPS Version: docker.elastic.co/beats/elastic-otel-collector-fips
### 2. Deployment Modes
Clear examples of the two primary architectural patterns:
#### A. Agent Mode (DaemonSet)
Used for host-level metrics and log collection.
```
YAML
apiVersion: otel.curated.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: edot-agent
spec:
mode: daemonset
image: docker.elastic.co/beats/elastic-otel-collector:latest
config: |
receivers:
otlp:
protocols: [grpc, http]
hostmetrics:
scrapers: [cpu, memory, network]
exporters:
elasticsearch:
endpoints: ["${ELASTIC_ENDPOINT}"]
api_key: "${ELASTIC_API_KEY}"
mapping: { mode: ecs }
service:
pipelines:
metrics: { receivers: [otlp, hostmetrics], exporters: [elasticsearch] }
```
#### B. Gateway Mode (Deployment)
Used as a centralized entry point for OTLP data from multiple services.
```
YAML
apiVersion: otel.curated.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: edot-gateway
spec:
mode: deployment
replicas: 2
image: docker.elastic.co/beats/elastic-otel-collector:latest
config: |
receivers:
otlp:
protocols: { grpc: {}, http: {} }
processors:
batch: {}
exporters:
elasticsearch:
endpoints: ["${ELASTIC_ENDPOINT}"]
api_key: "${ELASTIC_API_KEY}"
service:
pipelines:
traces: { receivers: [otlp], processors: [batch], exporters: [elasticsearch] }
```
### 3. Configuration Best Practices
How to pass credentials using Kubernetes Secrets in the spec.env field.
Enabling the mapping: mode: ecs setting to ensure compatibility with Elastic Observability dashboards.
### Reasoning
The OpenTelemetry Operator is the industry-standard way to manage OTel at scale in Kubernetes. By providing these snippets, Elastic ensures that users are following the "Elastic-way" (ECS mapping, optimized exporters) while using native Kubernetes workflows.
### Resources
https://github.com/open-telemetry/opentelemetry-operator
https://opentelemetry.io/docs/platforms/kubernetes/operator/
### Which deployment methods does this change impact?
Unknown
### Feature differences
_No response_
### What Elastic Stack release is this request related to?
N/A
### Serverless release
_No response_
### Collaboration model
Unknown
### Point of contact.
**Main contact:** @hegerchr
**Stakeholders:**
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.