Skip to content

[Bug]: Jaeger v2 Using CRD OpenTelemetryCollector cannot use 0 replicas to create Elasticsarch Index #7123

@Jorgevillada

Description

@Jorgevillada

What happened?

jaeger 2.6.0 use default replicas(1) to create elasticsearch index when CRD OpenTelemetryCollector use 0 replicas.

relates to
#754
Maybe this condition is affecting
https://github.com/jaegertracing/jaeger/blob/main/internal/storage/elasticsearch/config/config.go#L358

Steps to reproduce

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: ${name}
  namespace: ${namespace}
spec:
  mode: deployment
  image: jaegertracing/jaeger:2.6.0
  ports:
  - name: jaeger
    port: 16686
  config:
    service:
      extensions: [jaeger_storage, jaeger_query]
      pipelines:
        traces:
          receivers: [otlp]    
          exporters: [jaeger_storage_exporter]
    extensions:
      jaeger_query:
        storage:
          traces: elasticsearch
      jaeger_storage:
        backends:
          elasticsearch:
            elasticsearch:
              server_urls:
                - http://localhost:9200
              indices:
                index_prefix: ""
                spans:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                services:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                dependencies:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                sampling:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      jaeger_storage_exporter:
        trace_storage: elasticsearch

ES output settings
"number_of_replicas":"1",

{
   "jaeger-span-2025-05-14":{
      "settings":{
         "index":{
            "routing":{
               "allocation":{
                  "include":{
                     "_tier_preference":"data_content"
                  }
               }
            },
            "mapping":{
               "nested_fields":{
                  "limit":"50"
               }
            },
            "number_of_shards":"2",
            "provided_name":"jaeger-span-2025-05-14",
            "creation_date":"1747242100856",
            "requests":{
               "cache":{
                  "enable":"true"
               }
            },
            "number_of_replicas":"1",
            "uuid":"Z5eqFn_BTJObC8Hkssbcmw",
            "version":{
               "created":"8521000"
            }
         }
      }
   }
}

Expected behavior

in ES index settings

"number_of_replicas":"0"

Relevant log output

elasticsearch index setting

{
   "jaeger-span-2025-05-14":{
      "settings":{
         "index":{
            "routing":{
               "allocation":{
                  "include":{
                     "_tier_preference":"data_content"
                  }
               }
            },
            "mapping":{
               "nested_fields":{
                  "limit":"50"
               }
            },
            "number_of_shards":"2",
            "provided_name":"jaeger-span-2025-05-14",
            "creation_date":"1747242100856",
            "requests":{
               "cache":{
                  "enable":"true"
               }
            },
            "number_of_replicas":"1",
            "uuid":"Z5eqFn_BTJObC8Hkssbcmw",
            "version":{
               "created":"8521000"
            }
         }
      }
   }
}

Screenshot

No response

Additional context

No response

Jaeger backend version

v2.6.0

SDK

No response

Pipeline

OTLP > Jaeger v26.0 (using OpenTelemetryCollector CRD) > ES v8.17 storage

Stogage backend

Elasticsearch 8.17

Operating system

Linux

Deployment model

Kubernetes with Opentelemetry-operator

Deployment configs

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: ${name}
  namespace: ${namespace}
spec:
  mode: deployment
  image: jaegertracing/jaeger:2.6.0
  ports:
  - name: jaeger
    port: 16686
  config:
    service:
      extensions: [jaeger_storage, jaeger_query]
      pipelines:
        traces:
          receivers: [otlp]    
          exporters: [jaeger_storage_exporter]
    extensions:
      jaeger_query:
        storage:
          traces: elasticsearch
      jaeger_storage:
        backends:
          elasticsearch:
            elasticsearch:
              server_urls:
                - http://localhost:9200
              indices:
                index_prefix: ""
                spans:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                services:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                dependencies:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                sampling:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      jaeger_storage_exporter:
        trace_storage: elasticsearch

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions