Files
otel-demo/chart/README.md
Scaffolder 92edf90fd9
Some checks failed
CI Pipeline / Build and Test (push) Successful in 4s
Security Scanning / Trivy — Filesystem & Dependency Scan (push) Failing after 7s
Security Scanning / Gitleaks — Secret Scan (push) Failing after 7s
Security Scanning / Security Summary (push) Failing after 3s
Build and Publish TechDocs / build-and-publish (push) Successful in 1m2s
initial commit
Change-Id: I8e318861a258686ddc53dda08858f74c573a6520
2026-04-02 13:07:28 +00:00

22 KiB

OpenTelemetry Demo Helm Chart

The helm chart installs the OpenTelemetry Demo in a Kubernetes cluster.

Prerequisites

  • Kubernetes 1.24+
  • Helm 3.14+

Installing the Chart

Add OpenTelemetry Helm repository:

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts

To install the chart with the release name my-otel-demo, run the following command:

helm install my-otel-demo open-telemetry/opentelemetry-demo

Upgrading

See UPGRADING.md.

OpenShift

Installing the chart on OpenShift requires the following additional steps:

  1. Create a new project:

    oc new-project opentelemetry-demo
    
  2. Create a new service account:

    oc create sa opentelemetry-demo
    
  3. Add the service account to the anyuid SCC (may require cluster admin):

    oc adm policy add-scc-to-user anyuid -z opentelemetry-demo
    
  4. Add view role to the service account to allow Prometheus seeing the services pods:

    oc adm policy add-role-to-user view -z opentelemetry-demo
    
  5. Add privileged SCC to the service account to allow Grafana to run:

    oc adm policy add-scc-to-user privileged -z opentelemetry-demo
    
  6. Install the chart with the following command:

    helm install my-otel-demo charts/opentelemetry-demo \
        --namespace opentelemetry-demo \
        --set serviceAccount.create=false \
        --set serviceAccount.name=opentelemetry-demo \
        --set prometheus.rbac.create=false \
        --set prometheus.serviceAccounts.server.create=false \
        --set prometheus.serviceAccounts.server.name=opentelemetry-demo \
        --set grafana.rbac.create=false \
        --set grafana.serviceAccount.create=false \
        --set grafana.serviceAccount.name=opentelemetry-demo
    

Chart Parameters

Chart parameters are separated in 4 general sections:

  • Default - Used to specify defaults applied to all demo components
  • Components - Used to configure the individual components (microservices) for the demo
  • Observability - Used to enable/disable dependencies
  • Sub-charts - Configuration for all sub-charts

Default parameters (applied to all demo components)

Property Description Default
default.env Environment variables added to all components Array of several OpenTelemetry environment variables
default.envOverrides Used to override individual environment variables without re-specifying the entire array. []
default.image.repository Demo components image name otel/demo
default.image.tag Demo components image tag (leave blank to use app version) nil
default.image.pullPolicy Demo components image pull policy IfNotPresent
default.image.pullSecrets Demo components image pull secrets []
default.replicas Number of replicas for each component 1
default.schedulingRules.nodeSelector Node labels for pod assignment {}
default.schedulingRules.affinity Man of node/pod affinities {}
default.schedulingRules.tolerations Tolerations for pod assignment []
default.securityContext Demo components container security context {}
serviceAccount.annotations Annotations for the serviceAccount {}
serviceAccount.create Whether to create a serviceAccount or use an existing one true
serviceAccount.name The name of the ServiceAccount to use for demo components ""

Component parameters

The OpenTelemetry demo contains several components (microservices). Each component is configured with a common set of parameters. All components will be defined within components.[NAME] where [NAME] is the name of the demo component.

Note

The following parameters require a components.[NAME]. prefix where [NAME] is the name of the demo component

Parameter Description Default
enabled Is this component enabled true
useDefault.env Use the default environment variables in this component true
imageOverride.repository Name of image for this component Defaults to the overall default image repository
imageOverride.tag Tag of the image for this component Defaults to the overall default image tag
imageOverride.pullPolicy Image pull policy for this component IfNotPresent
imageOverride.pullSecrets Image pull secrets for this component []
service.type Service type used for this component ClusterIP
service.port Service port used for this component nil
service.nodePort Service node port used for this component nil
service.annotations Annotations to add to the component's service {}
ports Array of ports to open for deployment and service of this component []
env Array of environment variables added to this component Each component will have its own set of environment variables
envOverrides Used to override individual environment variables without re-specifying the entire array []
replicas Number of replicas for this component 1 for kafka, and redis ; nil otherwise
resources CPU/Memory resource requests/limits Each component will have a default memory limit set
schedulingRules.nodeSelector Node labels for pod assignment {}
schedulingRules.affinity Man of node/pod affinities {}
schedulingRules.tolerations Tolerations for pod assignment []
securityContext Container security context {}
podSecurityContext Pod security context s {}
podLabels Pod labels for this component {}
podAnnotations Pod annotations for this component {}
ingress.enabled Enable the creation of Ingress rules false
ingress.annotations Annotations to add to the ingress rule {}
ingress.ingressClassName Ingress class to use. If not specified default Ingress class will be used. nil
ingress.hosts Array of Hosts to use for the ingress rule. []
ingress.hosts[].paths Array of paths / routes to use for the ingress rule host. []
ingress.hosts[].paths[].path Actual path route to use nil
ingress.hosts[].paths[].pathType Path type to use for the given path. Typically this is Prefix. nil
ingress.hosts[].paths[].port Port to use for the given path nil
ingress.additionalIngresses Array of additional ingress rules to add []
ingress.additionalIngresses[].name Each additional ingress rule needs to have a unique name nil
command Command & arguments to pass to the container being spun up for this service []
additionalVolumeMounts Array of Volumes that will be mounted []
mountedConfigMaps[].name Name of the Volume that will be used for the ConfigMap mount nil
mountedConfigMaps[].mountPath Path where the ConfigMap data will be mounted nil
mountedConfigMaps[].subPath SubPath within the mountPath. Used to mount a single file into the path. nil
mountedConfigMaps[].existingConfigMap Name of the existing ConfigMap to mount nil
mountedConfigMaps[].data Contents of a ConfigMap. Keys should be the names of the files to be mounted. {}
mountedEmptyDir[].name Name of the EmptyDir volume that will be used for the volume mount nil
mountedEmptyDir[].mountPath Path where the EmptyDir data will be mounted nil
mountedEmptyDir[].subPath SubPath within the mountPath. Used to mount a single file into the path. nil
initContainers Array of init containers to add to the pod []
initContainers[].name Name of the init container nil
initContainers[].image Image to use for the init container nil
initContainers[].command Command to run for the init container nil
sidecarContainers Array of sidecar containers to add to the pod []
additionalVolumes Array of additional volumes to add to the pod []

Sub-charts

The OpenTelemetry Demo Helm chart depends on 5 sub-charts:

  • OpenTelemetry Collector
  • Jaeger
  • Prometheus
  • Grafana
  • OpenSearch

Parameters for each sub-chart can be specified within that sub-chart's respective top level. This chart will override some of the dependent sub-chart parameters by default. The overriden parameters are specified below.

OpenTelemetry Collector

Note

The following parameters have a opentelemetry-collector. prefix.

Parameter Description Default
enabled Install the OpenTelemetry collector true
nameOverride Name that will be used by the sub-chart release otel-collector
mode The Deployment or Daemonset mode deployment
resources CPU/Memory resource requests/limits 200Mi memory limit
service.type Service Type to use ClusterIP
config OpenTelemetry Collector configuration Configuration required for demo

Jaeger

Note

The following parameters have a jaeger. prefix.

Parameter Description Default
enabled Install the Jaeger sub-chart true
jaeger.storage.type Sets storage type fo memory storage memory
jaeger.extraEnv Additional environment variables referenced in userconfig
jaeger.resources CPU/Memory resource requests/limits for Jaeger 400Mi memory limit
userconfig Configuration used for Jaeger's collector instance

Prometheus

Note

The following parameters have a prometheus. prefix.

Parameter Description Default
enabled Install the Prometheus sub-chart true
alertmanager.enabled Install the alertmanager false
configmapReload.prometheus.enabled Install the configmap-reload container false
kube-state-metrics.enabled Install the kube-state-metrics sub-chart false
prometheus-node-exporter.enabled Install the Prometheus Node Exporter sub-chart false
prometheus-pushgateway.enabled Install the Prometheus Push Gateway sub-chart false
server.extraFlags Additional flags to add to Prometheus server ["enable-feature=exemplar-storage", "web.enable-otlp-receiver"]
server.retention Metrics data retention time 7d
server.tsdb.out_of_order_time_window How long to allow for out of order data 30m
server.otlp OTLP metrics ingest configuration
server.persistentVolume.enabled Create persistent volume for storage false
service.servicePort Service port used 9090
serverFiles.resources CPU/Memory resource requests/limits 200Mi memory limit

Grafana

Note

The following parameters have a grafana. prefix.

Parameter Description Default
enabled Install the Grafana sub-chart true
grafana.ini Grafana's primary configuration Enables anonymous login, and proxy through the frontend-proxy service
adminPassword Password used by admin user admin
plugins Array of plugins to enable ["grafana-opensearch-datasource"]
sidecar Configuration for Grafana sidecar Enable alerts, dashboards, and data sources
resources CPU/Memory resource requests/limits 175Mi memory limit

OpenSearch

Note

The following parameters have a opensearch. prefix.

Parameter Description Default
enabled Install the OpenSearch sub-chart true
fullnameOverride Name that will be used by the sub-chart release otel-demo-opensearch
clusterName Name of the OpenSearch cluster demo-cluster
nodeGroup OpenSearch Node group configuration otel-demo
singleNode Deploy a single node OpenSearch cluster true
opensearchJavaOpts Java options for OpenSearch JVM -Xms400m -Xmx400m
persistence.enabled Enable persistent storage for OpenSearch data false
extraEnvs Additional environment variables for OpenSearch Disables demo config and security plugin
resources CPU/Memory resource requests/limits 1100Mi memory limit