Skip to main content

OpenTelemetry Operator

Wrapper around the upstream opentelemetry-operator (v0.120.2) and opentelemetry-collector (v0.169.0) Helm charts. Installs the operator and CRDs (OpenTelemetryCollector, Instrumentation) that manage OpenTelemetry Collector deployments and language auto-instrumentation declaratively.

Why it's in KubeAid​

openobserve's log/metrics/trace pipeline (the openobserve-collector sub-chart) is built entirely on these CRDs: its agent DaemonSet and gateway StatefulSet are both OpenTelemetryCollector resources (opentelemetry.io/v1beta1), and its per-language auto-instrumentation (instrumentation-go.yaml, -java.yaml, -python.yaml, -nodejs.yaml, -dotnet.yaml) are Instrumentation resources (opentelemetry.io/v1alpha1). This operator must be installed before openobserve-collector can reconcile any of them.

Prerequisites​

  • Deploy this chart before openobserve / openobserve-collector - the OpenObserve docs call this out explicitly.

Key values / KubeAid-specific configuration​

ValueDescriptionDefault
opentelemetry-operator.manager.featureGatesMap.operator.networkpolicyKeep the operator from creating a NetworkPolicy for itself; on Cilium it blocks the operator's own API accessfalse
opentelemetry-operator.manager.collectorImage.repositoryDefault collector image the operator injects for OpenTelemetryCollector CRsotel/opentelemetry-collector-k8s
opentelemetry-collector.image.repositoryImage for this chart's own collector releaseotel/opentelemetry-collector-k8s
opentelemetry-collector.modeDeployment mode for this chart's own collectordaemonset

Upgrading from KubeAid 33.0.3​

KubeAid 33.0.3 ships operator 0.159.0, which creates a NetworkPolicy named opentelemetry-operator in the operator's namespace. On Cilium that policy blocks the operator's access to the API server, and the operator crash-loops (dial tcp 10.96.0.1:443: i/o timeout, then "OpenTelemetryCollector CRDs are not present"). Turning the feature off does not remove the policy, so after syncing this chart, delete it once:

kubectl -n <operator-namespace> delete networkpolicy opentelemetry-operator

If the rollout still has an operator pod from the old ReplicaSet (feature on), delete that ReplicaSet first, or that pod can create the policy again.