open-telemetry / opentelemetry-operator

Kubernetes Operator for OpenTelemetry Collector
Apache License 2.0
1.19k stars 429 forks source link

OpenTelemetry with Jaeger on Openshift - Transient failure #668

Closed MikeJOBirch closed 2 years ago

MikeJOBirch commented 2 years ago

Hi i cant get communication between Opentelemetry Collector and Jaeger and i have trouble finding anything about this(Openshift). I use the OpenTelemetry operator with the Jaeger operator from redhat: https://github.com/jaegertracing/jaeger-operator

When i try to provide an endpoint to the Jaeger-collector in the OpenTelemetry-Collector configuration i receive the following error with OpenTelemetry when the pod is running: 2022-01-14T13:42:48.683Z info jaegerexporter/exporter.go:186 State of the connection with the Jaeger Collector backend {"kind": "exporter", "name": "jaeger", "state": "TRANSIENT_FAILURE"}

When the OpenTelemetry collector receive a span and tries to export it to Jaeger i get the following error: 2022-01-14T13:43:13.320Z info exporterhelper/queued_retry.go:325 Exporting failed. Will retry the request after interval. {"kind": "exporter", "name": "jaeger", "error": "failed to push trace data via Jaeger exporter: rpc error: code = Unavailable desc = connection error: desc = \"transport: authentication handshake failed: x509: certificate signed by unknown authority\"", "interval": "5.52330144s"}

Question

How do i configure this so that the OpenTelemetry operator can export to Jaeger with the use of the Jaeger-operator?

Setup

My OpenTelemetry Collector is configured like this:

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  creationTimestamp: '2022-01-14T09:06:19Z'
  generation: 11
  labels:
    app.kubernetes.io/managed-by: opentelemetry-operator
  managedFields:
    - apiVersion: opentelemetry.io/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:spec':
          .: {}
          'f:config': {}
          'f:image': {}
      manager: Mozilla
      operation: Update
      time: '2022-01-14T09:06:19Z'
    - apiVersion: opentelemetry.io/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:status':
          .: {}
          'f:version': {}
      manager: opentelemetry-operator
      operation: Update
      subresource: status
      time: '2022-01-14T09:06:20Z'
  name: opentelemetrycollector-sample
  namespace: jeager-test
  resourceVersion: '459363'
  uid: b1a63884-356b-4620-9fd4-2268b08ed5c2
spec:
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:

    exporters:
      logging:

      jaeger:
          endpoint: jaeger-all-in-one-inmemory-collector-headless.jeager-test.svc.cluster.local:14250

    service:
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [jaeger,logging]
  image: >-
    registry.redhat.io/rhosdt/opentelemetry-collector-rhel8@sha256:42719dhjsahdjk1238210dnjahj1023801rur12321fs123128sfafasfhe2312312e

  mode: deployment
  resources: {}
  targetAllocator: {}
status:
  version: 0.33.0 

The Jaeger-Operator is just the default one (all-in-one) with no other configuration.

jpkrohling commented 2 years ago

cc @pavolloffay

pavolloffay commented 2 years ago

@MikeJOBirch please take a look at https://github.com/open-telemetry/opentelemetry-operator/issues/635#issuecomment-999855204.

@rkukura it would be great to document this somewhere in the upstream.