Skip to content

General Configuration Examples

Various general-purpose configuration examples for different deployment scenarios.

Agent with Cassandra

Jaeger agent deployment with Cassandra storage backend.

agent-cassandra-values.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
jaeger:
  storage:
    type: cassandra

cassandraSchemaJob:
  host: cassandra.cassandra.svc
  keyspace: jaeger
  password: admin
  username: admin
  datacenter: dc1

  # This parameter responsible for with either with SimpleStrategy (without replication)
  # or with NetworkReplicationStrategy (with replication):
  # * prod - will use NetworkReplicationStrategy
  # * test - will use SimpleStrategy
  mode: prod

  # This block allow to specify custom settings for Cassandra TTL
  # By default all traces store only 2 days, and all dependencies stored forever
  ttl:
    # two weeks in seconds
    trace: 1209600
    # let's store dependencies forever
    dependencies: 0

collector:
  install: true

query:
  install: true
  ingress:
    install: true
    host: query.<cloud_dns_name>

# This section is optional and allow to deploy a test service to generate some traces
# Useful if you want to verify how Jaeger receive, store and show traces
hotrod:
  install: true
  ingress:
    install: true
    host: hotrod.<cloud_dns_name>

Key parameters: - jaeger.storage.type: cassandra - Uses Cassandra as storage backend - cassandraSchemaJob.mode: prod - Production replication strategy - ttl.trace: 1209600 - Traces retained for 2 weeks - ttl.dependencies: 0 - Dependencies stored forever - hotrod.install: true - Deploys demo application for testing

Custom Docker Images

Override default images with custom or specific versions.

custom-images.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# This examples show how to specify the custom images to override default images
collector:
  image: jaegertracing/jaeger-collector:latest
query:
  image: jaegertracing/jaeger-query:latest
proxy:
  image: envoyproxy/envoy:v1.25.8
cassandraSchemaJob:
  image: jaegertracing/jaeger-cassandra-schema:latest
hotrod:
  image: jaegertracing/example-hotrod:latest
elasticsearch:
  indexCleaner:
    image: jaegertracing/jaeger-es-index-cleaner:latest
  rollover:
    image: jaegertracing/jaeger-es-rollover:latest
integrationTests:
  image: ghcr.io/netcracker/jaeger-integration-tests:main
statusProvisioner:
  image: ghcr.io/netcracker/qubership-deployment-status-provisioner:main

Key parameters: - collector.image - Custom Jaeger collector image - query.image - Custom Jaeger query image - proxy.image - Custom Envoy proxy image - cassandraSchemaJob.image - Custom schema migration image - integrationTests.image - Custom integration tests image

Use cases: - Using private registry images - Pinning to specific versions - Custom builds with patches

ElasticSearch Storage

Basic ElasticSearch configuration as storage backend.

elasticsearch-example-values.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
jaeger:
  storage:
    type: elasticsearch

# cassandraSchemaJob will be ignored if jaeger.storage.type is set to elasticsearch.
elasticsearch:
  client:
    username: admin
    password: admin
    scheme: https
    url: opensearch.opensearch.svc:443
  indexCleaner:
    install: true

collector:
  install: true

query:
  install: true

Key parameters: - jaeger.storage.type: elasticsearch - Uses ElasticSearch storage - elasticsearch.client.url - ElasticSearch service endpoint - elasticsearch.client.scheme: https - Secure connection - elasticsearch.indexCleaner.install: true - Automated index cleanup

High Availability Deployment

Production-ready HA configuration with multiple replicas and anti-affinity.

ha-deployment-value.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
jaeger:
  storage:
    type: cassandra

cassandraSchemaJob:
  host: cassandra.cassandra.svc
  keyspace: jaeger
  password: admin
  username: admin
  datacenter: dc1

  # This parameter responsible for with either with SimpleStrategy (without replication)
  # or with NetworkReplicationStrategy (with replication):
  # * prod - will use NetworkReplicationStrategy
  # * test - will use SimpleStrategy
  mode: prod

collector:
  install: true

  # This parameter allow to specify number of jaeger collector service replicas.
  # If collector should be run in High Available mode need specify 2 or more replicas.
  replicas: 2

  # Affinity need to tell Kubernetes schedule pod on different nodes and avoid situation when two
  # replicas will run on the same node (and both replicas will unavailable with node in disaster case)
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
            - jaeger-collector
        topologyKey: kubernetes.io/hostname

query:
  install: true

  # This parameter allow to specify number of jaeger query service replicas.
  # If collector should be run in High Available mode need specify 2 or more replicas.
  #
  # But unlike from collector service, the query service need only to see already collected data.
  # And it unavailability doesn't affect the process of receiving and store traces.
  replicas: 2
  ingress:
    install: true
    host: query.<cloud_dns_name>

  # Affinity need to tell Kubernetes schedule pod on different nodes and avoid situation when two
  # replicas will run on the same node (and both replicas will unavailable with node in disaster case)
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
            - jaeger-query
        topologyKey: kubernetes.io/hostname


# This section is optional and allow to deploy a test service to generate some traces
# Useful if you want to verify how Jaeger receive, store and show traces
hotrod:
  install: true
  ingress:
    install: true
    host: hotrod.<cloud_dns_name>

Key parameters: - collector.replicas: 2 - Multiple collector instances - query.replicas: 2 - Multiple query instances - affinity.podAntiAffinity - Spreads pods across nodes - requiredDuringSchedulingIgnoredDuringExecution - Hard anti-affinity rule

Benefits: - Fault tolerance - Load distribution - Zero-downtime updates

HotROD Demo Application

Demo application deployment for trace generation and testing.

hotord-example-values.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
jaeger:
  storage:
    type: elasticsearch

# cassandraSchemaJob will be ignored if jaeger.storage.type is set to elasticsearch.
elasticsearch:
  client:
    username: admin
    password: admin
    url: elasticsearch.elasticsearch.svc:9200
  indexCleaner:
    install: true

collector:
  install: true

query:
  install: true
  route:
    install: true
    host: query.<cloud_dns_name>

# This section is optional and allow to deploy a test service to generate some traces
# Useful if you want to verify how Jaeger receive, store and show traces
hotrod:
  install: true
  ingress:
    install: true
    host: hotrod.<cloud_dns_name>

Key parameters: - hotrod.install: true - Deploys HotROD demo app - hotrod.ingress.install: true - Exposes demo via ingress - hotrod.ingress.host - External hostname - Uses ElasticSearch as storage backend

Purpose: - Generate sample traces - Verify Jaeger installation - Demo distributed tracing

Integration Tests

Automated testing configuration for validating Jaeger deployment.

integration-tests-values.yaml
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
jaeger:
  storage:
    type: cassandra

cassandraSchemaJob:
  host: cassandra.cassandra.svc
  keyspace: jaeger
  password: admin
  username: admin
  datacenter: dc1

  # This parameter responsible for with either with SimpleStrategy (without replication)
  # or with NetworkReplicationStrategy (with replication):
  # * prod - will use NetworkReplicationStrategy
  # * test - will use SimpleStrategy
  mode: prod

  # This block allow to specify custom settings for Cassandra TTL
  # By default all traces store only 2 days, and all dependencies stored forever
  ttl:
    # two weeks in seconds
    trace: 1209600
    # let's store dependencies forever
    dependencies: 0

collector:
  install: true

query:
  install: true
  ingress:
    install: true
    host: query.<cloud_dns_name>

# This section is optional and allow to deploy a test service to generate some traces
# Useful if you want to verify how Jaeger receive, store and show traces
hotrod:
  install: true
  ingress:
    install: true
    host: hotrod.<cloud_dns_name>

integrationTests:
  install: true
  image: "ghcr.io/netcracker/jaeger-integration-tests:main"
  tags: "smokeORha"
  linkForGenerator: "https://jaeger-collector-host"
  generateCount: 10
  waitingTime: 500ms
  resources:
    requests:
      memory: 256Mi
      cpu: 50m
    limits:
      memory: 256Mi
      cpu: 400m
  statusWriting:
    enabled: true
    isShortStatusMessage: true
    onlyIntegrationTests: true
    customResourcePath: "apps/v1/jaeger/deployments/jaeger-integration-tests-runner"
  service:
    name: jaeger-integration-tests-runner
  serviceAccount:
    create: true
    name: "jaeger-integration-tests"
  securityContext:
    runAsUser: 2000
    fsGroup: 2000
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL

statusProvisioner:
  enabled: true
  image: ghcr.io/netcracker/qubership-deployment-status-provisioner:main
  lifetimeAfterCompletion: 300
  podReadinessTimeout: 300
  integrationTestsTimeout: 300
  resources:
    requests:
      memory: "50Mi"
      cpu: "50m"
    limits:
      memory: "100Mi"
      cpu: "100m"
  securityContext:
    runAsUser: 2000
    fsGroup: 2000
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
  containerSecurityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - ALL

Key parameters: - integrationTests.install: true - Enables integration tests - integrationTests.tags: "smokeORha" - Test suite selection - integrationTests.generateCount: 10 - Number of test traces - integrationTests.waitingTime: 500ms - Delay between operations - statusProvisioner.enabled: true - Deployment status reporting

Security context: - runAsUser: 2000 - Non-root user execution - runAsNonRoot: true - Security enforcement - allowPrivilegeEscalation: false - Prevents privilege escalation

Deployment Scenarios

Production: - HA deployment with multiple replicas - External storage (Cassandra/OpenSearch) - TLS encryption and authentication - Resource limits and monitoring

Development: - Single replica deployment - In-memory or simple storage - No authentication required - Minimal resource allocation

Testing: - HotRod demo application - Integration test suite - Temporary storage - Automated validation