8.6. OpenTelemetry :运行启用了 TLS 的 Jaeger


以下 Kafka 组件内置了对使用 OpenTelemetry 进行追踪的支持:

  • Kafka Connect
  • MirrorMaker
  • MirrorMaker 2
  • AMQ Streams Kafka Bridge

当使用 Jaeger exporter 时,通过 Jaeger gPRC 端点检索 trace 数据。默认情况下,此端点没有启用 TLS。但是,在使用 Jaeger operator 部署 Jaeger 实例时,仍然可以将其配置为使用 TLS。例如,当在 OpenShift 上运行 Red Hat OpenShift distributed tracing Operator 时,Operator 会自动启用 TLS。AMQ Streams 不支持在 gRPC 端点中带有 TLS 的 Jaeger 实例。

这个问题有两个临时解决方案。

临时解决方案:在 gRPC 端点中禁用 TLS

通过指定以下属性,创建 Jaeger 自定义资源并在 gRPC 端口中禁用 TLS。

  • collector.grpc.tls.enabled: false
  • reporter.grpc.tls.enabled: false

禁用 TLS 的 Jaeger 自定义资源示例

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: my-jaeger
spec:
  allInOne:
    options:
      agent.grpc.tls.enabled: false
      collector.grpc.tls.enabled: false

注意

此配置使用 allInOne 策略,它会在单个 pod 中部署所有 Jaeger 组件。其他部署策略(如用于生产环境的 production 策略)将 Jaeger 组件隔离为单独的 pod,以提高可扩展性和可靠性。

临时解决方案:通过 OpenTelemetry 收集器导出追踪

使用收集器接收、处理和导出 OpenTelemetry 跟踪数据。要通过 OpenTelemetry 收集器导出 trace 数据来解决这个问题,您可以按照以下步骤操作:

  1. 部署 Red Hat OpenShift distributed tracing 集合 Operator。
  2. 配置一个 OpenTelemetryCollector 自定义资源,用于部署收集器,以通过启用了 TLS 的端点接收 trace 数据,并将其传递给启用了 TLS 的端点。
  3. 在自定义资源中,指定 receivers 属性,以便在端口 14250 上创建启用了 TLS 的 Jaeger gRPC 端点。如果您使用其他追踪系统,您还可以创建其他端点,如 OTLP 端点。
  4. 指定 exporters 属性以指向启用了 TLS 的 Jaeger gRPC 端点。
  5. 在自定义资源的 pipelines 属性中声明管道配置。

在本例中,管道来自 Jaeger 和 OTLP 接收器到 Jaeger gRPC 端点。

OpenTelemetry 收集器配置示例

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: <namespace>
spec:
  mode: deployment
  config: |
   receivers:
     otlp:
       protocols:
         grpc:
         http:
     jaeger:
       protocols:
         grpc:
   exporters:
     jaeger:
     endpoint: jaeger-all-in-one-inmemory-collector-headless.openshift-distributed-tracing.svc.cluster.local:14250
       tls:
         ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
   service:
     pipelines:
       traces:
         receivers: [otlp,jaeger]
         exporters: [jaeger]

要使用收集器,您需要在追踪配置中将收集器端点指定为 exporter 端点。

使用 OpenTelemetry 的 Kafka Connect 的追踪配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect-cluster
spec:
  #...
  template:
    connectContainer:
      env:
        - name: OTEL_SERVICE_NAME
          value: my-otel-service
        - name: OTEL_EXPORTER_JAEGER_ENDPOINT
          value: "http:// jaeger-all-in-one-inmemory-collector-headless.openshift-distributed-tracing.svc.cluster.local:14250"
  tracing:
    type: opentelemetry
  #...

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部