1# Default values for opentelemetry-collector.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
7# -- Valid values are "daemonset", "deployment", and "statefulset".
9# -- Override the default apiVersion for custom controllers or for testing new API versions.
11# -- Specify which namespace should be used to deploy the resources into
13# Handles basic configuration of components that
14# also require k8s modifications to work correctly.
15# .Values.config can be used to modify/add to a preset
16# component configuration, but CANNOT be used to remove
17# preset configuration. If you require removal of any
18# sections of a preset configuration, you cannot use
19# the preset. Instead, configure the component manually in
20# .Values.config and use the other fields supplied in the
21# values.yaml to configure k8s as necessary.
23 # Configures the collector to collect logs.
24 # Adds the file_log receiver to the logs pipeline
25 # and adds the necessary volumes and volume mounts.
26 # Best used with mode = daemonset.
27 # See https://opentelemetry.io/docs/kubernetes/collector/components/#filelog-receiver for details on the receiver.
30 includeCollectorLogs: false
31 # -- Enabling this writes checkpoints in /var/lib/otelcol/ host directory.
32 # Note this changes collector's user to root, so that it can write to host directory.
33 storeCheckpoints: false
34 # -- The maximum bytes size of the recombined field.
35 # Once the size exceeds the limit, all received entries of the source will be combined and flushed.
36 maxRecombineLogSize: 102400
37 # Configures the collector to collect host metrics.
38 # Adds the hostmetrics receiver to the metrics pipeline
39 # and adds the necessary volumes and volume mounts.
40 # Best used with mode = daemonset.
41 # See https://opentelemetry.io/docs/kubernetes/collector/components/#host-metrics-receiver for details on the receiver.
44 # Configures the Kubernetes Processor to add Kubernetes metadata.
45 # Adds the k8s_attributes processor to all the pipelines
46 # and adds a preset of minimum required RBAC rules to ClusterRole.
47 # Best used with mode = daemonset.
48 # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-attributes-processor for details on the receiver.
51 # -- When enabled the processor will extract all labels for an associated pod and add them as resource attributes.
52 # The label's exact name will be the key.
53 extractAllPodLabels: false
54 # -- When enabled the processor will extract all annotations for an associated pod and add them as resource attributes.
55 # The annotation's exact name will be the key.
56 extractAllPodAnnotations: false
57 # Configures the collector to collect node, pod, and container metrics from the API server on a kubelet.
58 # Adds the kubeletstats receiver to the metrics pipeline
59 # and adds the necessary rules to ClusterRole.
60 # Best used with mode = daemonset.
61 # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubeletstats-receiver for details on the receiver.
64 # Configures the collector to collect kubernetes events.
65 # Adds the k8sobjects receiver to the logs pipeline
66 # and collects kubernetes events by default.
67 # Best used with mode = deployment or statefulset.
68 # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-objects-receiver for details on the receiver.
71 # -- When enabled, the preset uses the k8s_events receiver instead of k8sobjects. Will default to true in a future release.
72 useK8sEventsReceiver: false
73 # Collects Kubernetes objects via the k8sobjects receiver in pull mode (default interval: 1h).
74 # Can be used with mode = deployment, statefulset, or daemonset.
75 # Compatible with kubernetesEvents preset. Extra resources can be added via
76 # config.receivers.k8sobjects.objects (ClusterRole rules must be added manually via clusterRole.rules).
79 # When enabled with mode = daemonset, leader election is setup to prevent telemetry duplication.
80 # disableLeaderElection: false
81 # When enabled, watch mode is added alongside pull to stream real-time changes.
83 # Core Kubernetes workload resources: pods, nodes, namespaces, services, serviceaccounts, deployments, replicasets, daemonsets, statefulsets, jobs, cronjobs
86 # RBAC resources: roles, rolebindings, clusterroles, clusterrolebindings
89 # Storage resources: storageclasses, persistentvolumes, persistentvolumeclaims
92 # Networking resources: ingresses, networkpolicies
95 # Autoscaling resources: horizontalpodautoscalers
98 # VPA resources: verticalpodautoscalers (requires VPA CRD to be installed)
101 # Policy resources: poddisruptionbudgets
104 # API extensions resources: customresourcedefinitions
107 # Kubernetes events, collected in watch mode.
110 # Configures the Kubernetes Cluster Receiver to collect cluster-level metrics.
111 # Adds the k8s_cluster receiver to the metrics pipeline
112 # and adds the necessary rules to ClusterRole.
113 # Can be used with mode = deployment, statefulset, or daemonset.
114 # When used as a daemonset or with multiple replicas, leader election is set up to prevent duplication.
115 # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-cluster-receiver for details on the receiver.
118 # When enabled with mode = daemonset or with multiple replicas, leader election is set up to prevent telemetry duplication.
119 # disableLeaderElection: false
120 # Configures the collector to collect logs and metrics from pods with specific annotations.
121 # This preset can not be used together with the `logsCollection` preset.
122 # Adds the receiver_creator receiver to the logs and metrics pipelines
123 # and adds the necessary rules to ClusterRole.
124 # Best used with mode = daemonset.
125 # See https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/receivercreator/README.md#generate-receiver-configurations-from-provided-hints for details on the receiver.
131 # Configures the collector to collect profiling data.
132 # Adds profiles pipeline with the profiling receiver,
133 # and adds the necessary volumes, security context and host PID access.
135 # Warning: The profiling receiver requires elevated capabilities and hostPID,
136 # so it should be used with a dedicated collector distribution (e.g. otelcol-ebpf-profiler)
137 # rather than the general-purpose k8s distribution. This avoids granting elevated privileges
138 # to the same collector that handles metrics, traces, and logs.
139 # See https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-ebpf-profiler for more details.
140 # When enabled, the collector is also scheduled on Linux nodes only.
143 # Configures the collector to detect resource attributes using the resourcedetection processor.
144 # Adds the resourcedetection/env processor to all pipelines.
145 # Each detector can be enabled individually. Base detectors 'env' and 'k8s_api' are always included when any detector is enabled.
146 # Typically used to resolve the 'k8s.cluster.name' resource attribute.
147 # See https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourcedetectionprocessor for details.
161 # -- Specifies whether a configMap should be created (true by default)
163 # Specifies an existing ConfigMap to be mounted to the pod
164 # The ConfigMap MUST include the collector configuration via a key named 'relay' or the collector will not start.
165 # This also supports template content, which will eventually be converted to yaml.
167 # Specifies the relative path to custom ConfigMap template file. This option SHOULD be used when bundling a custom
168 # ConfigMap template, as it enables pod restart via a template checksum annotation.
170# When enabled, the chart will configure the collector to emit its traces, metrics, and logs over http via the OTLP using the Otel Go SDK.
171# If internalTelemetryViaOTLP.metrics.enabled the chart will remove the default prometheus receiver (which was configured to scrape the Collector's metrics).
172# Learn more about the Collector telemetry at https://opentelemetry.io/docs/collector/internal-telemetry/.
174# THIS OPTION IS EXPERIMENTAL AND SUBJECT TO BREAKING CHANGES
175internalTelemetryViaOTLP:
176 # -- The endpoint where the telemetry will be exported
178 # -- Optional headers to configure the exporters
180 # - name: "x-dest-auth"
181 # value: "some auth key"
184 # -- overrides internalTelemetryViaOTLP.endpoint for traces
186 # -- overrides internalTelemetryViaOTLP.headers for traces
190 # -- overrides internalTelemetryViaOTLP.endpoint for metrics
192 # -- overrides internalTelemetryViaOTLP.headers for metrics
196 # -- overrides internalTelemetryViaOTLP.endpoint for logs
198 # -- overrides internalTelemetryViaOTLP.headers for logs
200# Rewrite deprecated component names (e.g. k8sattributes -> k8s_attributes
201# processor, k8snode -> k8s_api resourcedetection detector) in the generated
202# config. Set to false if using older Collector images that do not recognize the
203# new names. Renamed from rewriteDeprecatedProcessorNames in chart 0.162.0.
204rewriteDeprecatedComponentNames: true
205# Base collector configuration.
206# Supports templating. To escape existing instances of {{ }}, use {{` <original content> `}}.
207# For example, {{ REDACTED_EMAIL }} becomes {{` {{ REDACTED_EMAIL }} `}}.
208# -- Base collector configuration. Supports templating; see the prose above this key in values.yaml.
209# @default -- OTLP receivers plus the debug exporter wired into logs, metrics and traces pipelines; see [values.yaml](./values.yaml)
214 # The health_check extension is mandatory for this chart.
215 # Without the health_check extension the collector will fail the readiness and liveness probes.
216 # The health_check extension can be modified, but should never be removed.
218 endpoint: ${env:MY_POD_IP}:13133
221 # Default memory limiter configuration for the collector based on k8s resource limits.
223 # check_interval is the time between measurements of memory usage.
225 # By default limit_mib is set to 80% of ".Values.resources.limits.memory"
227 # By default spike_limit_mib is set to 25% of ".Values.resources.limits.memory"
228 spike_limit_percentage: 25
233 endpoint: ${env:MY_POD_IP}:14250
235 endpoint: ${env:MY_POD_IP}:14268
237 endpoint: ${env:MY_POD_IP}:6831
241 endpoint: ${env:MY_POD_IP}:4317
243 endpoint: ${env:MY_POD_IP}:4318
244 # if internalTelemetryViaOTLP.metrics.enabled = true, prometheus receiver will be removed
248 - job_name: opentelemetry-collector
252 - ${env:MY_POD_IP}:8888
254 endpoint: ${env:MY_POD_IP}:9411
258 k8s.namespace.name: "${env:OTEL_K8S_NAMESPACE}"
259 k8s.node.name: "${env:OTEL_K8S_NODE_NAME}"
260 k8s.node.ip: "${env:OTEL_K8S_NODE_IP}"
261 k8s.pod.name: "${env:OTEL_K8S_POD_NAME}"
262 k8s.pod.ip: "${env:OTEL_K8S_POD_IP}"
263 host.name: "${env:OTEL_K8S_NODE_NAME}"
269 host: ${env:MY_POD_IP}
290 # if internalTelemetryViaOTLP.metrics.enabled = true, prometheus receiver will be removed
302# Helm currently has an issue (https://github.com/helm/helm/pull/12879) when using null to remove
303# default configuration from a subchart. The result is that you cannot remove default configuration
304# from `config`, such as a specific receiver or a specific pipeline, when the chart is used as a
307# Until the helm bug is fixed, this field is provided as an alternative when using this chart as a subchart.
308# It is not recommended to use this field when installing the chart directly.
310# When not empty, `alternateConfig` will be used to set the collector's configuration. It has NO default
311# values and IS NOT MERGED with config. Any configuration provided via `config` will be ignored when
312# `alternateConfig` is set. You MUST provide your own collector configuration.
314# Reminder that the healthcheck extension (or something else that provides the same functionality) is required.
316# Components configured by presets will be injected in the same way they are for `config`.
319 # -- If you want to use the core image `otel/opentelemetry-collector`, you also need to change `command.name` value to `otelcol`.
320 repository: cgr.dev/chainguard-private/opentelemetry-collector-contrib
321 pullPolicy: IfNotPresent
322 # -- Overrides the image tag whose default is the chart appVersion.
324 # -- When digest is set to a non-empty value, images will be pulled by digest (regardless of tag value).
325 digest: sha256:4e266a0384c737f81bc44e50a098d03537e04391c4d245c533d8bd6fdc4d8dc3
327# OpenTelemetry Collector executable
332 # -- Specifies whether a service account should be created
334 # -- Annotations to add to the service account
336 # -- The name of the service account to use.
337 # If not set and create is true, a name is generated using the fullname template
339 # -- Automatically mount a ServiceAccount's API credentials?
340 automountServiceAccountToken: true
342 # Specifies whether a clusterRole should be created
343 # Some presets also trigger the creation of a cluster role and cluster role binding.
344 # If using one of those presets, this field is no-op.
346 # -- Annotations to add to the clusterRole
347 # Can be used in combination with presets that create a cluster role.
349 # The name of the clusterRole to use.
350 # If not set a name is generated using the fullname template
351 # Can be used in combination with presets that create a cluster role.
353 # A set of rules as documented here : https://kubernetes.io/docs/reference/access-authn-authz/rbac/
354 # Can be used in combination with presets that create a cluster role to add additional rules.
367 # -- Annotations to add to the clusterRoleBinding
368 # Can be used in combination with presets that create a cluster role binding.
370 # The name of the clusterRoleBinding to use.
371 # If not set a name is generated using the fullname template
372 # Can be used in combination with presets that create a cluster role binding.
374podSecurityContext: {}
379topologySpreadConstraints: []
380# -- Allows for pod scheduler prioritisation
382# -- Allows for pod to use a specific runtime class, e.g. gvisor, kata-containers
383# Also useful for the pod security admissions plugins that rely on runtimeClassName
385terminationGracePeriodSeconds: 30
386# -- This also supports template content, which will eventually be converted to yaml.
388# -- This also supports template content, which will eventually be converted to yaml.
390# -- This also supports template content, which will eventually be converted to yaml.
392# -- This also supports template content, which will eventually be converted to yaml.
394# -- This also supports template content, which will eventually be converted to yaml.
396# Configuration for ports
397# nodePort is also allowed
438 # The metrics port is disabled by default. However you need to enable the port
439 # in order to use the ServiceMonitor (serviceMonitor.enabled) or PodMonitor (podMonitor.enabled).
444# When enabled, the chart will set the GOMEMLIMIT env var to 80% of the configured resources.limits.memory.
445# If no resources.limits.memory are defined then enabling does nothing.
446# It is HIGHLY recommend to enable this setting and set a value for resources.limits.memory.
448# -- Container resize policy for in-place resource resize (Kubernetes >= 1.27).
449# https://kubernetes.io/docs/concepts/workloads/autoscaling/#in-place-resizing
453# restartPolicy: NotRequired
454# - resourceName: memory
455# restartPolicy: RestartContainer
457# -- Resource limits & requests.
458# It is HIGHLY recommended to set resource limits.
465enableConfigChecksumAnnotation: true
468# -- Common labels to add to all otel-collector resources. Evaluated as a template.
470# app.kubernetes.io/part-of: my-app
472# -- Host networking requested for this pod. Use the host's network namespace.
474# Enable sharing the host's PID namespace with the pod.
475# WARNING: This grants visibility into all host processes and should only be enabled when required.
477# -- Adding entries to Pod /etc/hosts with HostAliases
478# https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/
484# -- Pod DNS policy ClusterFirst, ClusterFirstWithHostNet, None, Default, None
486# -- Custom DNS config. Required when DNS policy is None.
488# -- Custom kube scheduler name.
490# -- only used with deployment and statefulset modes.
492revisionHistoryLimit: 10
494# -- List of extra sidecars to add.
495# This also supports template content, which will eventually be converted to yaml.
504# image: busybox:latest
509# List of init container specs, e.g. for copying a binary to be executed as a lifecycle hook.
510# This also supports template content, which will eventually be converted to yaml.
511# Another usage of init containers is e.g. initializing filesystem permissions to the OTLP Collector user `10001` in case you are using persistence and the volume is producing a permission denied error for the OTLP Collector container.
515# image: busybox:latest
525# image: busybox:latest
529# - 'chown -R 10001: /var/lib/storage/otc' # use the path given as per `extensions.file_storage.directory` & `extraVolumeMounts[x].mountPath`
531# - name: opentelemetry-collector-data # use the name of the volume used for persistence
532# mountPath: /var/lib/storage/otc # use the path given as per `extensions.file_storage.directory` & `extraVolumeMounts[x].mountPath`
534# -- Pod lifecycle policies.
543# liveness probe configuration
544# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
547 # Number of seconds after the container has started before startup, liveness or readiness probes are initiated.
548 # initialDelaySeconds: 1
549 # How often in seconds to perform the probe.
551 # Number of seconds after which the probe times out.
553 # Minimum consecutive failures for the probe to be considered failed after having succeeded.
554 # failureThreshold: 1
555 # Duration in seconds the pod needs to terminate gracefully upon probe failure.
556 # terminationGracePeriodSeconds: 10
560# readiness probe configuration
561# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
564 # Number of seconds after the container has started before startup, liveness or readiness probes are initiated.
565 # initialDelaySeconds: 1
566 # How often (in seconds) to perform the probe.
568 # Number of seconds after which the probe times out.
570 # Minimum consecutive successes for the probe to be considered successful after having failed.
571 # successThreshold: 1
572 # Minimum consecutive failures for the probe to be considered failed after having succeeded.
573 # failureThreshold: 1
577# startup probe configuration
578# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
581# Number of seconds after the container has started before startup probes are initiated.
582# initialDelaySeconds: 1
583# How often in seconds to perform the probe.
585# Number of seconds after which the probe times out.
587# Minimum consecutive failures for the probe to be considered failed after having succeeded.
589# Duration in seconds the pod needs to terminate gracefully upon probe failure.
590# terminationGracePeriodSeconds: 10
596 # Enable the creation of a Service.
597 # By default, it's enabled on mode != daemonset.
598 # However, to enable it on mode = daemonset, its creation must be explicitly enabled
601 # Supported values: PreferClose (deprecated in K8s 1.33+), PreferSameZone, PreferSameNode
602 # trafficDistribution: PreferClose
604 # loadBalancerIP: 1.2.3.4
605 # loadBalancerSourceRanges: []
607 # By default, Service of type 'LoadBalancer' or 'NodePort' will be created setting 'externalTrafficPolicy: Cluster'
608 # unless other value is explicitly set.
609 # Possible values are Cluster or Local (https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip)
610 # externalTrafficPolicy: Cluster
612 # By default, Service will be created setting 'internalTrafficPolicy: Local' on mode = daemonset
613 # unless other value is explicitly set.
614 # Setting 'internalTrafficPolicy: Cluster' on a daemonset is not recommended
615 # internalTrafficPolicy: Cluster
619 # ingressClassName: nginx
621 # - host: collector.example.com
627 # - secretName: collector-tls
629 # - collector.example.com
631 # Additional ingresses - only created if ingress.enabled is true
632 # Useful for when differently annotated ingress services are required
633 # Each additional ingress needs key "name" set to something unique
634 additionalIngresses: []
636 # ingressClassName: nginx
639 # - host: collector.example.com
645 # - secretName: collector-tls
647 # - collector.example.com
648# Gateway API HTTPRoute. An alternative to ingress for exposing the
649# collector's HTTP-based receivers through a Gateway API implementation.
650# Requires the Gateway API CRDs to be installed in the cluster.
653 # HTTPRoute apiVersion (defaults to "gateway.networking.k8s.io/v1" when empty)
656 # parentRefs reference the Gateway(s) this HTTPRoute is attached to
659 # namespace: gateway-system
660 # sectionName: otlp-http
662 # hostnames matched against the HTTP Host header to select this route
664 # - collector.example.com
666 # rules associate request matches with a backend port on the collector
667 # service. backendRefs "name" defaults to the collector service when omitted.
677 # -- The pod monitor by default scrapes the metrics port.
678 # The metrics port needs to be enabled as well.
683 # -- additional labels for the PodMonitor
685 # release: kube-prometheus-stack
687 # -- The service monitor by default scrapes the metrics port.
688 # The metrics port needs to be enabled as well.
693 # -- additional labels for the ServiceMonitor
695 # release: kube-prometheus-stack
696 # Used to set relabeling and metricRelabeling configs on the ServiceMonitor
697 # https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
699 metricRelabelings: []
700 # -- Sets a sample limit on the ServiceMonitor
702# PodDisruptionBudget is used only if mode is "deployment" or "statefulset"
708# autoscaling is used only if mode is "deployment" or "statefulset"
714 targetCPUUtilizationPercentage: 80
715 # targetMemoryUtilizationPercentage: 80
716 # Supply an array of custom metrics to be used for autoscaling. It includes externalMetrics, objectMetrics, and podsMetrics.
717 additionalMetrics: []
720 # When 'mode: daemonset', maxSurge cannot be used when hostPort is set for any of the ports
723 strategy: RollingUpdate
727 # Create default rules for monitoring the collector
730 # -- Additional labels for PrometheusRule alerts
731 additionalRuleLabels: {}
732 # -- Additional annotations for PrometheusRule alerts
733 additionalRuleAnnotations: {}
734 # -- additional labels for the PrometheusRule
737 # -- volumeClaimTemplates for a statefulset
738 volumeClaimTemplates: []
739 podManagementPolicy: "Parallel"
740 # Controls if and how PVCs created by the StatefulSet are deleted. Available in Kubernetes 1.23+.
741 persistentVolumeClaimRetentionPolicy:
747 # -- Annotations to add to the NetworkPolicy
749 # Configure the 'from' clause of the NetworkPolicy.
750 # By default this will restrict traffic to ports enabled for the Collector. If
751 # you wish to further restrict traffic to other hosts or specific namespaces,
752 # see the standard NetworkPolicy 'spec.ingress.from' definition for more info:
753 # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/
755 # # Allow traffic from any pod in any namespace, but not external hosts
756 # - namespaceSelector: {}
757 # # Allow external access from a specific cidr block
759 # cidr: 192.168.1.64/32
760 # # Allow access from pods in specific namespaces
761 # - namespaceSelector:
763 # - key: kubernetes.io/metadata.name
769 # Add additional ingress rules to specific ports
770 # Useful to allow external hosts/services to access specific ports
771 # An example is allowing an external prometheus server to scrape metrics
773 # See the standard NetworkPolicy 'spec.ingress' definition for more info:
774 # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/
775 extraIngressRules: []
781 # cidr: 192.168.1.64/32
783 # Restrict egress traffic from the OpenTelemetry collector pod
784 # See the standard NetworkPolicy 'spec.egress' definition for more info:
785 # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/
788 # - namespaceSelector: {}
790 # cidr: 192.168.10.10/24
794# -- Allow containers to share processes across pod namespace
795shareProcessNamespace: false