Cassandra Storage Examples¶
Cassandra is the recommended storage backend for high-volume production deployments.
Simple Cassandra Setup¶
Basic single-node configuration for development or testing.
# 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
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:
- cassandraSchemaJob.mode: prod
- Uses NetworkReplicationStrategy for production
- cassandraSchemaJob.host
- Cassandra service endpoint
- hotrod.install: true
- Deploys test trace generator
Cassandra Cluster Setup¶
Production-ready cluster configuration with replication.
# 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
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:
- replicationFactor: 3
- Data replicated across 3 nodes
- collector.replicas: 3
- Multiple collector instances
- Resource limits for production workloads
Cassandra with TLS¶
Secure connection to Cassandra cluster.
# 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
tls:
enabled: true
commonName: test123
ca: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
key: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
cert: |
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
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:
- tls.enabled: true
- Enables TLS encryption
- tls.secretName
- Kubernetes secret with certificates
- tls.serverName
- Certificate validation hostname
Cassandra with TLS (Predefined Secret)¶
TLS configuration using existing Kubernetes secret.
# 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
tls:
enabled: true
existingSecret: test-cassandra-secret
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:
- tls.enabled: true
- Enables TLS encryption
- tls.existingSecret
- References existing Kubernetes secret
- mode: prod
- Production replication strategy
- Assumes TLS secret already exists in cluster
Custom TTL Configuration¶
Configure data retention periods.
# 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:
- traceTTL: 172800
- Traces retained for 2 days
- dependenciesTTL: 86400
- Dependencies retained for 1 day
- TTL values in seconds
Custom Security Context¶
Configure security context for Cassandra pods.
# 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
securityContext:
runAsUser: 2000
fsGroup: 2000
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
query:
install: true
securityContext:
runAsUser: 2000
fsGroup: 2000
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
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
securityContext:
runAsUser: 2000
fsGroup: 2000
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
ingress:
install: true
host: hotrod.<cloud_dns_name>
Key parameters:
- securityContext
- Pod security settings
- runAsUser
- User ID for container execution
- fsGroup
- File system group ownership
Custom Authenticators¶
Configure custom authentication methods for Cassandra.
# Default values for jaeger.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
cassandraSchemaJob:
host: cassandra.cassandra.svc
port: 9043
username: admin
password: admin
mode: prod
keyspace: jaeger
datacenter: dc1
# This section allow to override list of default allowed authenticators during deploy
allowedAuthenticators:
- org.apache.cassandra.auth.PasswordAuthenticator
- com.instaclustr.cassandra.auth.SharedSecretAuthenticator
- com.datastax.bdp.cassandra.auth.DseAuthenticator
Key parameters:
- authenticator
- Authentication mechanism
- authorizer
- Authorization mechanism
- Custom authentication configuration
Usage¶
- Download the desired configuration file
- Update
<cloud_dns_name>
with your domain - Update Cassandra credentials
- Deploy with Helm: