Skip to content

Commit d7a9615

Browse files
author
Debakel Orakel
committed
Support zone aware replication
1 parent 8fb9b3b commit d7a9615

39 files changed

Lines changed: 1939 additions & 249 deletions

File tree

class/loki.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ parameters:
3030
output_path: ${_instance}/10_helm_loki
3131
helm_values_files:
3232
- ${_base_directory}/helmcharts/loki/${loki:charts:loki:version}/${loki:preset}.yaml
33+
- ${_base_directory}/helmcharts/loki/${loki:charts:loki:version}/${_instance}-components.yaml
3334
- ${_base_directory}/helmcharts/loki/${loki:charts:loki:version}/${_instance}-configs.yaml
3435
- ${_base_directory}/helmcharts/loki/${loki:charts:loki:version}/${_instance}-overrides.yaml
3536
helm_params:

component/helm_values.jsonnet

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ local hasRolloutOperator = std.member(inv.applications, 'rollout-operator');
1010
// Global Params and Zone Aware Replication
1111
local globalConfig = params.global + com.makeMergeable({
1212
nodeSelector: std.get(params, 'globalNodeSelector', params.global.nodeSelector),
13-
zoneAwareReplication: if hasRolloutOperator then params.global.zoneAwareReplication else std.trace('rollout-operator must be installed', {}),
13+
zoneAwareReplication: params.global.zoneAwareReplication {
14+
enabled: if params.global.zoneAwareReplication.enabled then
15+
// Assert that zone aware replication is only enabled if rollout-operator is installed
16+
if hasRolloutOperator then true else error 'rollout-operator must be installed for zone-aware replication'
17+
else false,
18+
},
1419
});
1520

1621
local components = com.makeMergeable({
@@ -237,6 +242,11 @@ local hardRestrictions = com.makeMergeable({
237242
enabled: false,
238243
},
239244
[if !std.member([ 'none', 'legacy' ], params.preset) then 'deploymentMode']: 'Distributed',
245+
ingester: {
246+
zoneAwareReplication: {
247+
enabled: if hasRolloutOperator && params.global.zoneAwareReplication.enabled then true else false,
248+
},
249+
},
240250
});
241251

242252
{

tests/extra-config.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
applications:
2+
- rollout-operator
23
- openshift4-monitoring
34

45
parameters:
@@ -28,10 +29,18 @@ parameters:
2829
accessLogExporter:
2930
tag: latest
3031

32+
preset: extra-small
33+
3134
components:
3235
ruler:
3336
enabled: true
3437

38+
global:
39+
nodeSelector:
40+
appuio.io/node-class: plus
41+
zoneAwareReplication:
42+
enabled: true
43+
3544
s3:
3645
endpoint: 's3.example.com'
3746
region: 'us-east-1'

tests/golden/defaults/loki/loki/10_helm_loki/loki/templates/monitoring/loki-rules.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
app.kubernetes.io/instance: loki
66
app.kubernetes.io/name: loki
77
app.kubernetes.io/version: 3.7.2
8-
helm.sh/chart: loki-13.7.2
8+
helm.sh/chart: loki-17.4.11
99
name: loki-loki-rules
1010
namespace: syn-loki
1111
spec:

tests/golden/defaults/loki/loki/10_helm_loki/loki/templates/monitoring/servicemonitor.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
app.kubernetes.io/instance: loki
66
app.kubernetes.io/name: loki
77
app.kubernetes.io/version: 3.7.2
8-
helm.sh/chart: loki-13.7.2
8+
helm.sh/chart: loki-17.4.11
99
name: loki
1010
namespace: syn-loki
1111
spec:

tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/backend/query-scheduler-discovery.yaml

Lines changed: 0 additions & 28 deletions
This file was deleted.

tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/write/pdb.yaml renamed to tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/chunks-cache/pdb.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@ apiVersion: policy/v1
22
kind: PodDisruptionBudget
33
metadata:
44
labels:
5-
app.kubernetes.io/component: write
5+
app.kubernetes.io/component: memcached-chunks-cache
66
app.kubernetes.io/instance: loki
77
app.kubernetes.io/name: loki
8-
app.kubernetes.io/version: 3.7.2
9-
helm.sh/chart: loki-17.4.11
10-
name: loki-write
8+
name: loki-chunks-cache
119
namespace: syn-loki
1210
spec:
1311
maxUnavailable: 1
1412
selector:
1513
matchLabels:
16-
app.kubernetes.io/component: write
14+
app.kubernetes.io/component: memcached-chunks-cache
1715
app.kubernetes.io/instance: loki
1816
app.kubernetes.io/name: loki

tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/chunks-cache/statefulset.yaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ metadata:
1313
namespace: syn-loki
1414
spec:
1515
podManagementPolicy: Parallel
16-
replicas: 1
16+
replicas: 2
1717
selector:
1818
matchLabels:
1919
app.kubernetes.io/component: memcached-chunks-cache
@@ -66,10 +66,10 @@ spec:
6666
timeoutSeconds: 3
6767
resources:
6868
limits:
69-
memory: 9830Mi
69+
memory: 4Gi
7070
requests:
7171
cpu: 500m
72-
memory: 9830Mi
72+
memory: 4Gi
7373
securityContext:
7474
allowPrivilegeEscalation: false
7575
capabilities:
@@ -117,7 +117,8 @@ spec:
117117
seccompProfile:
118118
type: RuntimeDefault
119119
initContainers: []
120-
nodeSelector: {}
120+
nodeSelector:
121+
appuio.io/node-class: plus
121122
securityContext:
122123
fsGroup: 11211
123124
runAsGroup: 11211

tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/backend/service.yaml renamed to tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/compactor/service.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ kind: Service
33
metadata:
44
annotations: null
55
labels:
6-
app.kubernetes.io/component: backend
6+
app.kubernetes.io/component: compactor
77
app.kubernetes.io/instance: loki
88
app.kubernetes.io/name: loki
99
app.kubernetes.io/version: 3.7.2
1010
helm.sh/chart: loki-17.4.11
11-
name: loki-backend
11+
name: loki-compactor
1212
namespace: syn-loki
1313
spec:
1414
ports:
@@ -26,7 +26,7 @@ spec:
2626
targetPort: grpc
2727
publishNotReadyAddresses: true
2828
selector:
29-
app.kubernetes.io/component: backend
29+
app.kubernetes.io/component: compactor
3030
app.kubernetes.io/instance: loki
3131
app.kubernetes.io/name: loki
3232
type: ClusterIP
@@ -36,14 +36,14 @@ kind: Service
3636
metadata:
3737
annotations: null
3838
labels:
39-
app.kubernetes.io/component: backend
39+
app.kubernetes.io/component: compactor
4040
app.kubernetes.io/instance: loki
4141
app.kubernetes.io/name: loki
4242
app.kubernetes.io/version: 3.7.2
4343
helm.sh/chart: loki-17.4.11
4444
prometheus.io/service-monitor: 'false'
4545
variant: headless
46-
name: loki-backend-headless
46+
name: loki-compactor-headless
4747
namespace: syn-loki
4848
spec:
4949
clusterIP: None
@@ -62,7 +62,7 @@ spec:
6262
targetPort: grpc
6363
publishNotReadyAddresses: true
6464
selector:
65-
app.kubernetes.io/component: backend
65+
app.kubernetes.io/component: compactor
6666
app.kubernetes.io/instance: loki
6767
app.kubernetes.io/name: loki
6868
type: ClusterIP

tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/write/workload.yaml renamed to tests/golden/extra-config/loki/loki/10_helm_loki/loki/templates/compactor/workload.yaml

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@ apiVersion: apps/v1
22
kind: StatefulSet
33
metadata:
44
labels:
5-
app.kubernetes.io/component: write
5+
app.kubernetes.io/component: compactor
66
app.kubernetes.io/instance: loki
77
app.kubernetes.io/name: loki
88
app.kubernetes.io/version: 3.7.2
99
helm.sh/chart: loki-17.4.11
10-
name: loki-write
10+
name: loki-compactor
1111
namespace: syn-loki
1212
spec:
1313
podManagementPolicy: Parallel
14-
replicas: 3
14+
replicas: 1
1515
revisionHistoryLimit: 10
1616
selector:
1717
matchLabels:
18-
app.kubernetes.io/component: write
18+
app.kubernetes.io/component: compactor
1919
app.kubernetes.io/instance: loki
2020
app.kubernetes.io/name: loki
21-
serviceName: loki-write-headless
21+
serviceName: loki-compactor-headless
2222
template:
2323
metadata:
2424
annotations:
25-
checksum/config: 024a6bdf8e5f9fcb1b738320856091cf13e30a5fd575d46b637df747723e7f78
26-
kubectl.kubernetes.io/default-container: write
25+
checksum/config: ef7e4e1428196d5f360adf616f57243174b2d1a6cf5180603f91bc7ba17deaeb
26+
kubectl.kubernetes.io/default-container: compactor
2727
labels:
28-
app.kubernetes.io/component: write
28+
app.kubernetes.io/component: compactor
2929
app.kubernetes.io/instance: loki
3030
app.kubernetes.io/name: loki
3131
app.kubernetes.io/part-of: memberlist
@@ -37,7 +37,7 @@ spec:
3737
requiredDuringSchedulingIgnoredDuringExecution:
3838
- labelSelector:
3939
matchLabels:
40-
app.kubernetes.io/component: write
40+
app.kubernetes.io/component: compactor
4141
app.kubernetes.io/instance: loki
4242
app.kubernetes.io/name: loki
4343
topologyKey: kubernetes.io/hostname
@@ -47,10 +47,10 @@ spec:
4747
- -config.file=/etc/loki/config/config.yaml
4848
- -config.expand-env=true
4949
- -memberlist.advertise-addr=$(POD_IP)
50-
- -target=write
50+
- -target=compactor
5151
env:
5252
- name: GOMEMLIMIT
53-
value: 6963MiB
53+
value: 435MiB
5454
- name: GOGC
5555
value: '80'
5656
- name: POD_IP
@@ -70,7 +70,7 @@ spec:
7070
periodSeconds: 30
7171
successThreshold: 1
7272
timeoutSeconds: 1
73-
name: write
73+
name: compactor
7474
ports:
7575
- containerPort: 3100
7676
name: http-metrics
@@ -92,11 +92,10 @@ spec:
9292
timeoutSeconds: 1
9393
resources:
9494
limits:
95-
cpu: 3
96-
memory: 8Gi
95+
memory: 512Mi
9796
requests:
98-
cpu: 1
99-
memory: 4Gi
97+
cpu: 250m
98+
memory: 384Mi
10099
securityContext:
101100
allowPrivilegeEscalation: false
102101
capabilities:
@@ -115,13 +114,18 @@ spec:
115114
- mountPath: /tmp
116115
name: temp
117116
enableServiceLinks: true
117+
nodeSelector:
118+
appuio.io/node-class: plus
118119
securityContext:
120+
fsGroup: 10001
119121
fsGroupChangePolicy: OnRootMismatch
122+
runAsGroup: 10001
120123
runAsNonRoot: true
124+
runAsUser: 10001
121125
seccompProfile:
122126
type: RuntimeDefault
123127
serviceAccountName: loki
124-
terminationGracePeriodSeconds: 300
128+
terminationGracePeriodSeconds: 30
125129
volumes:
126130
- emptyDir: {}
127131
name: temp
@@ -134,17 +138,8 @@ spec:
134138
- configMap:
135139
name: loki-runtime
136140
name: runtime-config
141+
- emptyDir: {}
142+
name: data
137143
updateStrategy:
138144
rollingUpdate:
139145
partition: 0
140-
volumeClaimTemplates:
141-
- apiVersion: v1
142-
kind: PersistentVolumeClaim
143-
metadata:
144-
name: data
145-
spec:
146-
accessModes:
147-
- ReadWriteOnce
148-
resources:
149-
requests:
150-
storage: 10Gi

0 commit comments

Comments
 (0)