General Configuration Examples¶
Various general-purpose configuration examples for different deployment scenarios.
Agent with Cassandra¶
Jaeger agent deployment with Cassandra storage backend.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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