elastic / elastic/docs-content

[Internal]: Add guide for deploying EDOT Collector via OpenTelemetry Operator (Agent & Gateway modes)

Open
#6,062 2 comments 0 reactions 1 assignee Claimed by @alexandra5000 View on GitHub
Planned-S22 Team:Ingest
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.