Skip to content

Commit 55a4989

Browse files
authored
[loki] Fix ingester prefix name (#317)
* [loki] Fix ingester prefix name Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de> * [loki] Fix ingester prefix name Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de> --------- Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
1 parent 70b4414 commit 55a4989

File tree

6 files changed

+252
-7
lines changed

6 files changed

+252
-7
lines changed

charts/loki/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Helm chart for Grafana Loki supporting monolithic, simple scalable,
44
type: application
55
# renovate: docker=docker.io/grafana/loki
66
appVersion: 3.7.1
7-
version: 11.4.5
7+
version: 11.4.6
88
kubeVersion: ">=1.25.0-0"
99
home: https://grafana-community.github.io/helm-charts
1010
sources:

charts/loki/templates/_pod.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ metadata:
2525
app.kubernetes.io/part-of: memberlist
2626
{{- end }}
2727
{{- if $rolloutZoneName }}
28-
name: {{ $target }}-{{ $rolloutZoneName }}
29-
rollout-group: {{ $target }}
28+
name: {{ if $component.addIngesterNamePrefix }}loki-{{ end }}{{ $target }}-{{ $rolloutZoneName }}
29+
rollout-group: {{ with $component.rolloutGroupPrefix }}{{ . }}-{{ end }}{{ $target }}
3030
{{- end }}
3131
{{- with (mergeOverwrite (dict) .Values.loki.podLabels .Values.defaults.podLabels $component.podLabels) }}
3232
{{- toYaml . | nindent 4 }}

charts/loki/templates/_service.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ spec:
122122
selector:
123123
{{ include "loki.selectorLabels" . | nindent 4 }}
124124
app.kubernetes.io/component: {{ $target | quote }}
125-
{{ if $rolloutZoneName }}
126-
name: {{ include "loki.prefixIngesterName" . }}ingester-{{ $rolloutZoneName }}
127-
rollout-group: {{ include "loki.prefixRolloutGroup" . }}ingester
125+
{{- if $rolloutZoneName }}
126+
name: {{ if $component.addIngesterNamePrefix }}loki-{{ end }}{{ $target }}-{{ $rolloutZoneName }}
127+
rollout-group: {{ with $component.rolloutGroupPrefix }}{{ . }}-{{ end }}{{ $target }}
128128
{{- end }}
129129
{{- end }}
130130
{{- end }}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# $schema: https://raw.githubusercontent.com/helm-unittest/helm-unittest/refs/heads/main/schema/helm-testsuite.json
2+
suite: ingester service
3+
templates:
4+
- ingester/service.yaml
5+
- config.yaml
6+
7+
set:
8+
deploymentMode: Distributed
9+
loki.useTestSchema: true
10+
loki.storage.bucketNames.chunks: chunks
11+
loki.storage.bucketNames.ruler: ruler
12+
loki.storage.bucketNames.admin: admin
13+
ingester.zoneAwareReplication.enabled: true
14+
ingester.replicas: 3
15+
16+
tests:
17+
- it: renders one service and four headless services in distributed mode
18+
asserts:
19+
- hasDocuments:
20+
count: 5
21+
template: ingester/service.yaml
22+
23+
- it: keeps global service selector stable without name or rollout-group labels
24+
asserts:
25+
- equal:
26+
path: metadata.name
27+
value: RELEASE-NAME-loki-ingester
28+
documentIndex: 0
29+
template: ingester/service.yaml
30+
- equal:
31+
path: spec.selector["app.kubernetes.io/component"]
32+
value: ingester
33+
documentIndex: 0
34+
template: ingester/service.yaml
35+
- notExists:
36+
path: spec.selector.name
37+
documentIndex: 0
38+
template: ingester/service.yaml
39+
- notExists:
40+
path: spec.selector["rollout-group"]
41+
documentIndex: 0
42+
template: ingester/service.yaml
43+
44+
- it: sets default zonal headless selectors for zone-a
45+
asserts:
46+
- equal:
47+
path: metadata.name
48+
value: RELEASE-NAME-loki-ingester-zone-a-headless
49+
documentIndex: 2
50+
template: ingester/service.yaml
51+
- equal:
52+
path: spec.selector.name
53+
value: ingester-zone-a
54+
documentIndex: 2
55+
template: ingester/service.yaml
56+
- equal:
57+
path: spec.selector["rollout-group"]
58+
value: ingester
59+
documentIndex: 2
60+
template: ingester/service.yaml
61+
62+
- it: applies addIngesterNamePrefix to zonal headless service selectors
63+
set:
64+
ingester.addIngesterNamePrefix: true
65+
asserts:
66+
- equal:
67+
path: spec.selector.name
68+
value: loki-ingester-zone-a
69+
documentIndex: 2
70+
template: ingester/service.yaml
71+
- equal:
72+
path: spec.selector.name
73+
value: loki-ingester-zone-b
74+
documentIndex: 3
75+
template: ingester/service.yaml
76+
- equal:
77+
path: spec.selector.name
78+
value: loki-ingester-zone-c
79+
documentIndex: 4
80+
template: ingester/service.yaml
81+
82+
- it: applies rolloutGroupPrefix to zonal headless service selectors
83+
set:
84+
ingester.rolloutGroupPrefix: myprefix
85+
asserts:
86+
- equal:
87+
path: spec.selector["rollout-group"]
88+
value: myprefix-ingester
89+
documentIndex: 2
90+
template: ingester/service.yaml
91+
- equal:
92+
path: spec.selector["rollout-group"]
93+
value: myprefix-ingester
94+
documentIndex: 3
95+
template: ingester/service.yaml
96+
- equal:
97+
path: spec.selector["rollout-group"]
98+
value: myprefix-ingester
99+
documentIndex: 4
100+
template: ingester/service.yaml
101+
102+
- it: applies both prefixes to zonal headless service selectors together
103+
set:
104+
ingester.addIngesterNamePrefix: true
105+
ingester.rolloutGroupPrefix: myprefix
106+
asserts:
107+
- equal:
108+
path: spec.selector.name
109+
value: loki-ingester-zone-a
110+
documentIndex: 2
111+
template: ingester/service.yaml
112+
- equal:
113+
path: spec.selector["rollout-group"]
114+
value: myprefix-ingester
115+
documentIndex: 2
116+
template: ingester/service.yaml
117+
- equal:
118+
path: metadata.labels["app.kubernetes.io/component"]
119+
value: ingester
120+
documentIndex: 2
121+
template: ingester/service.yaml
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# $schema: https://raw.githubusercontent.com/helm-unittest/helm-unittest/refs/heads/main/schema/helm-testsuite.json
2+
suite: ingester service account
3+
templates:
4+
- ingester/statefulset-ingester-zone.yaml
5+
- ingester/statefulset-ingester.yaml
6+
- ingester/serviceaccount.yaml
7+
- config.yaml
8+
9+
set:
10+
deploymentMode: Distributed
11+
loki.useTestSchema: true
12+
loki.storage.bucketNames.chunks: chunks
13+
loki.storage.bucketNames.ruler: ruler
14+
loki.storage.bucketNames.admin: admin
15+
ingester.zoneAwareReplication.enabled: true
16+
ingester.replicas: 3
17+
rbac.sccEnabled: true
18+
19+
tests:
20+
- it: uses global service account name in ingester zone workloads by default
21+
asserts:
22+
- template: ingester/statefulset-ingester-zone.yaml
23+
equal:
24+
path: spec.template.spec.serviceAccountName
25+
value: RELEASE-NAME-loki
26+
documentIndex: 0
27+
- template: ingester/serviceaccount.yaml
28+
hasDocuments:
29+
count: 0
30+
31+
- it: keeps using global service account name when global serviceAccount.create is true
32+
set:
33+
serviceAccount.create: true
34+
asserts:
35+
- template: ingester/statefulset-ingester-zone.yaml
36+
equal:
37+
path: spec.template.spec.serviceAccountName
38+
value: RELEASE-NAME-loki
39+
documentIndex: 0
40+
41+
- it: uses ingester generated service account name when ingester account is created
42+
set:
43+
ingester.serviceAccount.create: true
44+
asserts:
45+
- template: ingester/statefulset-ingester-zone.yaml
46+
equal:
47+
path: spec.template.spec.serviceAccountName
48+
value: RELEASE-NAME-loki-ingester
49+
documentIndex: 0
50+
- template: ingester/serviceaccount.yaml
51+
equal:
52+
path: metadata.name
53+
value: RELEASE-NAME-loki-ingester
54+
55+
- it: keeps ingester service account names stable when ingester name/rollout prefixes are set
56+
set:
57+
ingester.serviceAccount.create: true
58+
ingester.addIngesterNamePrefix: true
59+
ingester.rolloutGroupPrefix: custom
60+
asserts:
61+
- template: ingester/statefulset-ingester-zone.yaml
62+
equal:
63+
path: spec.template.spec.serviceAccountName
64+
value: RELEASE-NAME-loki-ingester
65+
documentIndex: 0
66+
- template: ingester/serviceaccount.yaml
67+
equal:
68+
path: metadata.name
69+
value: RELEASE-NAME-loki-ingester
70+
71+
- it: uses ingester component service account name on non-zone StatefulSet workload kind
72+
set:
73+
ingester.zoneAwareReplication.enabled: false
74+
ingester.serviceAccount.create: true
75+
ingester.addIngesterNamePrefix: true
76+
ingester.rolloutGroupPrefix: custom
77+
asserts:
78+
- template: ingester/statefulset-ingester.yaml
79+
equal:
80+
path: kind
81+
value: StatefulSet
82+
- template: ingester/statefulset-ingester.yaml
83+
equal:
84+
path: spec.template.spec.serviceAccountName
85+
value: RELEASE-NAME-loki-ingester

charts/loki/tests/ingester/zone_test.yaml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,14 @@ tests:
110110
path: metadata.labels["rollout-group"]
111111
value: myprefix-ingester
112112
template: ingester/statefulset-ingester-zone.yaml
113+
- equal:
114+
path: spec.selector.matchLabels["rollout-group"]
115+
value: myprefix-ingester
116+
template: ingester/statefulset-ingester-zone.yaml
117+
- equal:
118+
path: spec.template.metadata.labels["rollout-group"]
119+
value: myprefix-ingester
120+
template: ingester/statefulset-ingester-zone.yaml
113121

114122
- it: should include loki- prefix in name label when addIngesterNamePrefix is true
115123
set:
@@ -120,6 +128,37 @@ tests:
120128
value: loki-ingester-zone-a
121129
documentIndex: 0
122130
template: ingester/statefulset-ingester-zone.yaml
131+
- equal:
132+
path: spec.selector.matchLabels.name
133+
value: loki-ingester-zone-a
134+
documentIndex: 0
135+
template: ingester/statefulset-ingester-zone.yaml
136+
- equal:
137+
path: spec.template.metadata.labels.name
138+
value: loki-ingester-zone-a
139+
documentIndex: 0
140+
template: ingester/statefulset-ingester-zone.yaml
141+
142+
- it: should keep StatefulSet resource names unchanged when both ingester prefixes are set
143+
set:
144+
ingester.addIngesterNamePrefix: true
145+
ingester.rolloutGroupPrefix: myprefix
146+
asserts:
147+
- equal:
148+
path: metadata.name
149+
value: RELEASE-NAME-loki-ingester-zone-a
150+
documentIndex: 0
151+
template: ingester/statefulset-ingester-zone.yaml
152+
- equal:
153+
path: metadata.name
154+
value: RELEASE-NAME-loki-ingester-zone-b
155+
documentIndex: 1
156+
template: ingester/statefulset-ingester-zone.yaml
157+
- equal:
158+
path: metadata.name
159+
value: RELEASE-NAME-loki-ingester-zone-c
160+
documentIndex: 2
161+
template: ingester/statefulset-ingester-zone.yaml
123162

124163
- it: should set app.kubernetes.io/part-of memberlist label
125164
asserts:
@@ -282,7 +321,7 @@ tests:
282321
set:
283322
ingester.persistence.enabled: true
284323
asserts:
285-
- isNotNull:
324+
- exists:
286325
path: spec.volumeClaimTemplates
287326
template: ingester/statefulset-ingester-zone.yaml
288327
- equal:

0 commit comments

Comments
 (0)