|
| 1 | +## Kube-stack Helm Chart |
| 2 | + |
| 3 | +**More detailed documentation can be found [here](https://github.com/elastic/opentelemetry/blob/main/docs/kubernetes/operator/README.md).** |
| 4 | + |
| 5 | +The [kube-stack Helm Chart](https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-kube-stack#readme) is used to manage the installation of the OpenTelemetry operator (including its CRDs) and to configure a suite of EDOT collectors, which instrument various Kubernetes components to enable comprehensive observability and monitoring. |
| 6 | + |
| 7 | +The chart is installed with a provided default [`values.yaml`](./values.yaml) file that can be customized when needed. |
| 8 | + |
| 9 | +### DaemonSet collectors |
| 10 | + |
| 11 | +The OpenTelemetry components deployed within the DaemonSet EDOT collectors are responsible for observing specific signals from each node. To ensure complete data collection, these components must be deployed on every node in the cluster. Failing to do so will result in partial and potentially incomplete data. |
| 12 | + |
| 13 | +The DaemonSet collectors handle the following data: |
| 14 | + |
| 15 | +- Host Metrics: Collects host metrics specific to each node, utilizing the [hostmetrics receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/hostmetricsreceiver/README.md) |
| 16 | +- Kubernetes Metrics: Captures metrics related to the Kubernetes infrastructure on each node, utlilizing [kubeletstats](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/kubeletstatsreceiver/README.md) receiver |
| 17 | +- Logs: Utilizes [File Log Receiver receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/filelogreceiver#readme) to gather logs from all Pods running on the respective node. |
| 18 | +- OTLP Traces: Utilizes [OTLP Receiver]( https://github.com/open-telemetry/opentelemetry-collector/blob/main/receiver/otlpreceiver#readme) which configures both HTTP and GRPC endpoints on the node to receive OTLP trace data. |
| 19 | + |
| 20 | +### Deployment collector |
| 21 | + |
| 22 | +The OpenTelemetry components deployed within a Deployment collector focus on gathering data at the cluster level rather than at individual nodes. A Deployment instance of the collector operates as a standalone (unlike DaemonSet collector instances, which are deployed on every node) |
| 23 | + |
| 24 | +The Deployment collector handles the following data: |
| 25 | + |
| 26 | +- Kubernetes Events: Monitors and collects events occurring across the entire Kubernetes cluster, utilizing [Kubernetes Objects Receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sobjectsreceiver#readme). |
| 27 | +- Cluster Metrics: Captures metrics that provide insights into the overall health and performance of the Kubernetes cluster, utilizing [Kubernetes Cluster Receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver#readme). |
| 28 | + |
| 29 | +### Auto-instrumentation |
| 30 | + |
| 31 | +The Helm Chart is configured to enable zero-code instrumentation using the [Operator's Instrumentation resource](https://github.com/open-telemetry/opentelemetry-operator/?tab=readme-ov-file#opentelemetry-auto-instrumentation-injection) for the following programming languages: |
| 32 | + |
| 33 | +- Go |
| 34 | +- Java |
| 35 | +- Node.js |
| 36 | +- Python |
| 37 | +- .NET |
| 38 | + |
| 39 | + |
| 40 | +### Installation |
| 41 | + |
| 42 | +1. Create the `opentelemetry-operator-system` Kubernetes namespace: |
| 43 | +``` |
| 44 | +$ kubectl create namespace opentelemetry-operator-system |
| 45 | +``` |
| 46 | + |
| 47 | +2. Create a secret in Kubernetes with the following command. |
| 48 | + ``` |
| 49 | + kubectl create -n opentelemetry-operator-system secret generic elastic-secret-otel \ |
| 50 | + --from-literal=elastic_endpoint='YOUR_ELASTICSEARCH_ENDPOINT' \ |
| 51 | + --from-literal=elastic_api_key='YOUR_ELASTICSEARCH_API_KEY' |
| 52 | + ``` |
| 53 | + Don't forget to replace |
| 54 | + - `YOUR_ELASTICSEARCH_ENDPOINT`: your Elasticsearch endpoint (*with* `https://` prefix example: `https://1234567.us-west2.gcp.elastic-cloud.com:443`). |
| 55 | + - `YOUR_ELASTICSEARCH_API_KEY`: your Elasticsearch API Key |
| 56 | + |
| 57 | +3. Execute the following commands to deploy the Helm Chart. |
| 58 | + |
| 59 | +``` |
| 60 | +$ helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts |
| 61 | +$ helm repo update |
| 62 | +$ helm upgrade --install --namespace opentelemetry-operator-system opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack --values ./values.yaml --version 0.3.3 |
| 63 | +
|
| 64 | +> [!NOTE] |
| 65 | +> Refer to the [compatibility matrix](https://github.com/elastic/opentelemetry/blob/main/docs/kubernetes/operator/README.md#compatibility-matrix) for a complete list of available manifests and associated helm chart versions. |
| 66 | +``` |
0 commit comments