Skip to content

Commit

Permalink
Merge pull request observatorium#64 from jpkrohling/Added-jaeger-all-…
Browse files Browse the repository at this point in the history
…in-one

Added jaeger all in one with badger storage
  • Loading branch information
metalmatze committed Oct 14, 2019
2 parents 5f79831 + c97e428 commit 0e20552
Show file tree
Hide file tree
Showing 7 changed files with 191 additions and 2 deletions.
81 changes: 81 additions & 0 deletions components/jaeger-collector.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
local service = k.core.v1.service;

{
jaeger+:: {
headlessService:
service.new(
'jaeger-collector-headless',
$.jaeger.deployment.metadata.labels,
[
service.mixin.spec.portsType.newNamed('grpc', 14250, 14250),
],
) +
service.mixin.metadata.withNamespace('observatorium') +
service.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.jaeger.deployment.metadata.name }) +
service.mixin.spec.withClusterIp('None'),

queryService:
service.new(
'jaeger-query',
$.jaeger.deployment.metadata.labels,
[
service.mixin.spec.portsType.newNamed('query', 16686, 16686),
],
) +
service.mixin.metadata.withNamespace('observatorium') +
service.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.jaeger.deployment.metadata.name }),

volumeClaim:
local claim = k.core.v1.persistentVolumeClaim;
claim.new() +
claim.mixin.metadata.withName('jaeger-store-data') +
claim.mixin.metadata.withNamespace('observatorium') +
claim.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.jaeger.deployment.metadata.name }) +
claim.mixin.spec.withAccessModes('ReadWriteOnce') +
claim.mixin.spec.resources.withRequests({ storage: '50Gi' },) +
claim.mixin.spec.withStorageClassName('standard'),

deployment:
local deployment = k.apps.v1.deployment;
local container = deployment.mixin.spec.template.spec.containersType;
local containerPort = container.portsType;
local env = container.envType;
local mount = container.volumeMountsType;
local volume = k.apps.v1.statefulSet.mixin.spec.template.spec.volumesType;

// the assumption based on past perf tests is that this collector should be able to comfortably
// ingest at least 2k spans/sec with badger and 256Mi of memory on 1 cpu.
// this depends on the span size, but these default values should provide a good base line
local c =
container.new($.jaeger.deployment.metadata.name, 'jaegertracing/all-in-one:1.14.0') +
container.withArgs([
'--badger.directory-key=/var/jaeger/store/keys',
'--badger.directory-value=/var/jaeger/store/values',
'--badger.ephemeral=false',
'--collector.queue-size=4000',
],) +
container.withEnv([
env.new('SPAN_STORAGE_TYPE', 'badger'),
]) + container.withPorts(
[
containerPort.newNamed(14250, 'grpc'),
containerPort.newNamed(14269, 'admin-http'),
containerPort.newNamed(16686, 'query'),
],
) +
container.withVolumeMounts([mount.new('jaeger-store-data', '/var/jaeger/store')]) +
container.mixin.readinessProbe.withFailureThreshold(3) +
container.mixin.readinessProbe.httpGet.withPath('/').withPort('14269').withScheme('HTTP') +
container.mixin.livenessProbe.withFailureThreshold(3) +
container.mixin.livenessProbe.httpGet.withPath('/').withPort('14269').withScheme('HTTP') +
container.mixin.resources.withRequests({ cpu: '1', memory: '256Mi' }) +
container.mixin.resources.withLimits({ cpu: '4', memory: '2Gi' });

deployment.new('jaeger-all-in-one', 1, c, $.jaeger.deployment.metadata.labels) +
deployment.mixin.metadata.withNamespace('observatorium') +
deployment.mixin.metadata.withLabels({ 'app.kubernetes.io/name': $.jaeger.deployment.metadata.name }) +
deployment.mixin.spec.selector.withMatchLabels($.jaeger.deployment.metadata.labels) +
deployment.mixin.spec.template.spec.withVolumes(volume.fromPersistentVolumeClaim($.jaeger.volumeClaim.metadata.name, $.jaeger.volumeClaim.metadata.name)),
},
}
1 change: 1 addition & 0 deletions environments/kubernetes/jaeger.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(import '../../components/jaeger-collector.libsonnet')
6 changes: 4 additions & 2 deletions environments/kubernetes/main.jsonnet
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
local app =
(import 'kube-thanos.libsonnet') +
(import 'telemeter.libsonnet');
(import 'telemeter.libsonnet') +
(import 'jaeger.libsonnet');

{ ['thanos-querier-' + name]: app.thanos.querier[name] for name in std.objectFields(app.thanos.querier) } +
{ ['thanos-receive-' + name]: app.thanos.receive[name] for name in std.objectFields(app.thanos.receive) } +
{ ['thanos-compactor-' + name]: app.thanos.compactor[name] for name in std.objectFields(app.thanos.compactor) } +
{ ['thanos-store-' + name]: app.thanos.store[name] for name in std.objectFields(app.thanos.store) } +
{ ['thanos-receive-controller-' + name]: app.thanos.receiveController[name] for name in std.objectFields(app.thanos.receiveController) } +
{ ['thanos-querier-cache-' + name]: app.thanos.querierCache[name] for name in std.objectFields(app.thanos.querierCache) } +
{ ['telemeter-' + name]: app.telemeterServer[name] for name in std.objectFields(app.telemeterServer) }
{ ['telemeter-' + name]: app.telemeterServer[name] for name in std.objectFields(app.telemeterServer) } +
{ ['jaeger-' + name]: app.jaeger[name] for name in std.objectFields(app.jaeger) }
62 changes: 62 additions & 0 deletions environments/kubernetes/manifests/jaeger-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: jaeger-all-in-one
name: jaeger-all-in-one
namespace: observatorium
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: jaeger-all-in-one
template:
metadata:
labels:
app.kubernetes.io/name: jaeger-all-in-one
spec:
containers:
- args:
- --badger.directory-key=/var/jaeger/store/keys
- --badger.directory-value=/var/jaeger/store/values
- --badger.ephemeral=false
- --collector.queue-size=4000
env:
- name: SPAN_STORAGE_TYPE
value: badger
image: jaegertracing/all-in-one:1.14.0
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: "14269"
scheme: HTTP
name: jaeger-all-in-one
ports:
- containerPort: 14250
name: grpc
- containerPort: 14269
name: admin-http
- containerPort: 16686
name: query
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: "14269"
scheme: HTTP
resources:
limits:
cpu: "4"
memory: 2Gi
requests:
cpu: "1"
memory: 256Mi
volumeMounts:
- mountPath: /var/jaeger/store
name: jaeger-store-data
readOnly: false
volumes:
- name: jaeger-store-data
persistentVolumeClaim:
claimName: jaeger-store-data
15 changes: 15 additions & 0 deletions environments/kubernetes/manifests/jaeger-headlessService.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: jaeger-all-in-one
name: jaeger-collector-headless
namespace: observatorium
spec:
clusterIP: None
ports:
- name: grpc
port: 14250
targetPort: 14250
selector:
app.kubernetes.io/name: jaeger-all-in-one
14 changes: 14 additions & 0 deletions environments/kubernetes/manifests/jaeger-queryService.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: jaeger-all-in-one
name: jaeger-query
namespace: observatorium
spec:
ports:
- name: query
port: 16686
targetPort: 16686
selector:
app.kubernetes.io/name: jaeger-all-in-one
14 changes: 14 additions & 0 deletions environments/kubernetes/manifests/jaeger-volumeClaim.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app.kubernetes.io/name: jaeger-all-in-one
name: jaeger-store-data
namespace: observatorium
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: standard

0 comments on commit 0e20552

Please sign in to comment.