Skip to content

Commit a90e443

Browse files
authored
Enable stateless Rulers (#151)
* Update kube-thanos to latest Signed-off-by: Saswata Mukherjee <[email protected]> * Add remote write configs to Rulers Signed-off-by: Saswata Mukherjee <[email protected]> * Add /api/v1/receive route to config and change ns Signed-off-by: Saswata Mukherjee <[email protected]> * Add other tenant to rwconfig Signed-off-by: Saswata Mukherjee <[email protected]>
1 parent e86ef5a commit a90e443

File tree

6 files changed

+333
-19
lines changed

6 files changed

+333
-19
lines changed

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ VENDOR_DIR = vendor
1616
$(VENDOR_DIR): $(JB) jsonnetfile.json jsonnetfile.lock.json
1717
@$(JB) install
1818

19+
.PHONY: update
20+
update: $(JB) jsonnetfile.json jsonnetfile.lock.json
21+
@$(JB) update
22+
1923
JSONNET_SRC = $(shell find . -type f -not -path './*vendor/*' \( -name '*.libsonnet' -o -name '*.jsonnet' \))
2024

2125
.PHONY: format
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
function(params) {
2+
assert std.isString(params.url),
3+
4+
remote_write: [
5+
{
6+
url: params.url,
7+
name: 'receive-rhobs',
8+
headers: {
9+
'THANOS-TENANT': '0fc2b00e-201b-4c17-b9f2-19d91adc4fd2',
10+
},
11+
write_relabel_configs: [
12+
{
13+
source_labels: ['tenant_id'],
14+
regex: '0fc2b00e-201b-4c17-b9f2-19d91adc4fd2',
15+
action: 'keep',
16+
},
17+
],
18+
},
19+
{
20+
url: params.url,
21+
name: 'receive-telemeter',
22+
headers: {
23+
'THANOS-TENANT': 'FB870BF3-9F3A-44FF-9BF7-D7A047A52F43',
24+
},
25+
write_relabel_configs: [
26+
{
27+
source_labels: ['tenant_id'],
28+
regex: 'FB870BF3-9F3A-44FF-9BF7-D7A047A52F43',
29+
action: 'keep',
30+
},
31+
],
32+
},
33+
{
34+
url: params.url,
35+
name: 'receive-dptp',
36+
headers: {
37+
'THANOS-TENANT': 'AC879303-C60F-4D0D-A6D5-A485CFD638B8',
38+
},
39+
write_relabel_configs: [
40+
{
41+
source_labels: ['tenant_id'],
42+
regex: 'AC879303-C60F-4D0D-A6D5-A485CFD638B8',
43+
action: 'keep',
44+
},
45+
],
46+
},
47+
{
48+
url: params.url,
49+
name: 'receive-osd',
50+
headers: {
51+
'THANOS-TENANT': '770c1124-6ae8-4324-a9d4-9ce08590094b',
52+
},
53+
write_relabel_configs: [
54+
{
55+
source_labels: ['tenant_id'],
56+
regex: '770c1124-6ae8-4324-a9d4-9ce08590094b',
57+
action: 'keep',
58+
},
59+
],
60+
},
61+
{
62+
url: params.url,
63+
name: 'receive-managedkafka',
64+
headers: {
65+
'THANOS-TENANT': '63e320cd-622a-4d05-9585-ffd48342633e',
66+
},
67+
write_relabel_configs: [
68+
{
69+
source_labels: ['tenant_id'],
70+
regex: '63e320cd-622a-4d05-9585-ffd48342633e',
71+
action: 'keep',
72+
},
73+
],
74+
},
75+
],
76+
}

jsonnetfile.lock.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@
183183
"subdir": "jsonnet/kube-thanos"
184184
}
185185
},
186-
"version": "e1a68590f56034ca1a43d59401f03e72fd01ac5f",
187-
"sum": "9g4HwpZ8Vpi950O6x92HNM47Yqa0+Nfv+7YbwwKpt3o="
186+
"version": "336482e12c794f048bd7ec9105281c7b3d76214c",
187+
"sum": "8Wh4rZIGaC/LFGbA5astHL27/Lxu+GEq6sPu/ajdjZY="
188188
},
189189
{
190190
"source": {

resources/services/metric-federation-rule-template.yaml

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,63 @@ objects:
4343
app.kubernetes.io/instance: observatorium
4444
app.kubernetes.io/part-of: observatorium
4545
name: metric-federation-rules
46+
- apiVersion: v1
47+
data:
48+
rw-config.yaml: |-
49+
"remote_write":
50+
- "headers":
51+
"THANOS-TENANT": "0fc2b00e-201b-4c17-b9f2-19d91adc4fd2"
52+
"name": "receive-rhobs"
53+
"url": "http://observatorium-thanos-receive.${NAMESPACE}.svc.cluster.local:19291/api/v1/receive"
54+
"write_relabel_configs":
55+
- "action": "keep"
56+
"regex": "0fc2b00e-201b-4c17-b9f2-19d91adc4fd2"
57+
"source_labels":
58+
- "tenant_id"
59+
- "headers":
60+
"THANOS-TENANT": "FB870BF3-9F3A-44FF-9BF7-D7A047A52F43"
61+
"name": "receive-telemeter"
62+
"url": "http://observatorium-thanos-receive.${NAMESPACE}.svc.cluster.local:19291/api/v1/receive"
63+
"write_relabel_configs":
64+
- "action": "keep"
65+
"regex": "FB870BF3-9F3A-44FF-9BF7-D7A047A52F43"
66+
"source_labels":
67+
- "tenant_id"
68+
- "headers":
69+
"THANOS-TENANT": "AC879303-C60F-4D0D-A6D5-A485CFD638B8"
70+
"name": "receive-dptp"
71+
"url": "http://observatorium-thanos-receive.${NAMESPACE}.svc.cluster.local:19291/api/v1/receive"
72+
"write_relabel_configs":
73+
- "action": "keep"
74+
"regex": "AC879303-C60F-4D0D-A6D5-A485CFD638B8"
75+
"source_labels":
76+
- "tenant_id"
77+
- "headers":
78+
"THANOS-TENANT": "770c1124-6ae8-4324-a9d4-9ce08590094b"
79+
"name": "receive-osd"
80+
"url": "http://observatorium-thanos-receive.${NAMESPACE}.svc.cluster.local:19291/api/v1/receive"
81+
"write_relabel_configs":
82+
- "action": "keep"
83+
"regex": "770c1124-6ae8-4324-a9d4-9ce08590094b"
84+
"source_labels":
85+
- "tenant_id"
86+
- "headers":
87+
"THANOS-TENANT": "63e320cd-622a-4d05-9585-ffd48342633e"
88+
"name": "receive-managedkafka"
89+
"url": "http://observatorium-thanos-receive.${NAMESPACE}.svc.cluster.local:19291/api/v1/receive"
90+
"write_relabel_configs":
91+
- "action": "keep"
92+
"regex": "63e320cd-622a-4d05-9585-ffd48342633e"
93+
"source_labels":
94+
- "tenant_id"
95+
kind: ConfigMap
96+
metadata:
97+
annotations:
98+
qontract.recycle: "true"
99+
labels:
100+
app.kubernetes.io/instance: observatorium
101+
app.kubernetes.io/part-of: observatorium
102+
name: metric-federation-ruler-remote-write-config
46103
- apiVersion: v1
47104
kind: Service
48105
metadata:
@@ -62,6 +119,9 @@ objects:
62119
- name: http
63120
port: 10902
64121
targetPort: 10902
122+
- name: reloader
123+
port: 9533
124+
targetPort: 9533
65125
selector:
66126
app.kubernetes.io/component: rule-evaluation-engine
67127
app.kubernetes.io/instance: metric-federation
@@ -96,6 +156,7 @@ objects:
96156
- namespace
97157
- pod
98158
targetLabel: instance
159+
- port: reloader
99160
namespaceSelector:
100161
matchNames: ${{NAMESPACES}}
101162
selector:
@@ -154,6 +215,7 @@ objects:
154215
"sampler_type": "ratelimiting"
155216
"service_name": "thanos-rule"
156217
"type": "JAEGER"
218+
- --remote-write.config-file=/etc/thanos/config/metric-federation-ruler-remote-write-config/rw-config.yaml
157219
env:
158220
- name: NAME
159221
valueFrom:
@@ -179,6 +241,7 @@ objects:
179241
key: aws_secret_access_key
180242
name: ${THANOS_S3_SECRET}
181243
image: ${THANOS_IMAGE}:${THANOS_IMAGE_TAG}
244+
imagePullPolicy: IfNotPresent
182245
livenessProbe:
183246
failureThreshold: 24
184247
httpGet:
@@ -192,6 +255,8 @@ objects:
192255
name: grpc
193256
- containerPort: 10902
194257
name: http
258+
- containerPort: 9533
259+
name: reloader
195260
readinessProbe:
196261
failureThreshold: 18
197262
httpGet:
@@ -214,14 +279,21 @@ objects:
214279
readOnly: false
215280
- mountPath: /etc/thanos/rules/metric-federation-rules
216281
name: metric-federation-rules
282+
- mountPath: /etc/thanos/config/metric-federation-ruler-remote-write-config
283+
name: metric-federation-ruler-remote-write-config
284+
readOnly: true
217285
- args:
218286
- -webhook-url=http://localhost:10902/-/reload
219287
- -volume-dir=/etc/thanos/rules/metric-federation-rules
288+
- -volume-dir=/etc/thanos/config/metric-federation-ruler-remote-write-config
220289
image: ${CONFIGMAP_RELOADER_IMAGE}:${CONFIGMAP_RELOADER_IMAGE_TAG}
290+
imagePullPolicy: IfNotPresent
221291
name: configmap-reloader
222292
volumeMounts:
223293
- mountPath: /etc/thanos/rules/metric-federation-rules
224294
name: metric-federation-rules
295+
- mountPath: /etc/thanos/config/metric-federation-ruler-remote-write-config
296+
name: metric-federation-ruler-remote-write-config
225297
- args:
226298
- --reporter.grpc.host-port=dns:///jaeger-collector-headless.${JAEGER_COLLECTOR_NAMESPACE}.svc:14250
227299
- --reporter.type=grpc
@@ -258,13 +330,16 @@ objects:
258330
cpu: 32m
259331
memory: 64Mi
260332
nodeSelector:
261-
beta.kubernetes.io/os: linux
333+
kubernetes.io/os: linux
262334
securityContext: {}
263335
serviceAccountName: ${SERVICE_ACCOUNT_NAME}
264336
volumes:
265337
- configMap:
266338
name: metric-federation-rules
267339
name: metric-federation-rules
340+
- configMap:
341+
name: metric-federation-ruler-remote-write-config
342+
name: metric-federation-ruler-remote-write-config
268343
volumeClaimTemplates:
269344
- metadata:
270345
labels:

0 commit comments

Comments
 (0)