blob: 5a92e56a74fcf1f35f4639a24103bf712fca0472 [file] [log] [blame]
Giorgi Lekveishvili4ec4c022024-08-17 15:09:24 +04001{
2 "$schema": "https://json-schema.org/draft-07/schema#",
3 "title": "Values",
4 "type": "object",
5 "definitions": {
6 "prometheusAlert": {
7 "type": "object",
8 "properties": {
9 "enabled": {
10 "type": "boolean"
11 },
12 "labels": {
13 "type": "object",
14 "additionalProperties": { "type": "string" }
15 }
16 },
17 "required": [ "enabled" ]
18 },
19 "probe": {
20 "type": "object",
21 "properties": {
22 "enabled": {
23 "type": "boolean"
24 },
25 "failureThreshold": {
26 "type": "integer"
27 },
28 "initialDelaySeconds": {
29 "type": "integer"
30 },
31 "periodSeconds": {
32 "type": "integer"
33 },
34 "successThreshold": {
35 "type": "integer"
36 },
37 "timeoutSeconds": {
38 "type": "integer"
39 }
40 },
41 "required": [
42 "failureThreshold",
43 "initialDelaySeconds",
44 "periodSeconds",
45 "successThreshold",
46 "timeoutSeconds"
47 ]
48 },
49 "component": {
50 "type": "object",
51 "properties": {
52 "enabled": {
53 "type": "boolean"
54 },
55 "logLevel": {
56 "type": "string",
57 "enum": [ "all", "debug", "info", "warn", "error", "none" ]
58 },
59 "image": {
60 "type": "object",
61 "properties": {
62 "repository": {
63 "type": "string"
64 },
65 "tag": {
66 "anyOf": [
67 { "type": "string" },
68 { "type": "null" }
69 ]
70 },
71 "pullPolicy": {
72 "anyOf": [
73 {
74 "type": "null"
75 },
76 {
77 "type": "string",
78 "enum": [ "Always", "IfNotPresent", "Never" ]
79 }
80 ]
81 }
82 }
83 },
84 "serviceAccount": {
85 "type": "object",
86 "properties": {
87 "create": {
88 "type": "boolean"
89 },
90 "name": {
91 "type": "string"
92 },
93 "annotations": {
94 "type": "object"
95 }
96 }
97 },
98 "resources": {
99 "type": "object"
100 },
101 "nodeSelector": {
102 "type": "object"
103 },
104 "tolerations": {
105 "type": "array",
106 "items": {
107 "type": "object"
108 }
109 },
110 "priorityClassName": {
111 "type":"string"
112 },
113 "runtimeClassName": {
114 "type":"string"
115 },
116 "affinity": {
117 "type": "object"
118 },
119 "podAnnotations": {
120 "type": "object"
121 },
122 "livenessProbe": {
123 "$ref": "#/definitions/probe"
124 },
125 "readinessProbe": {
126 "$ref": "#/definitions/probe"
127 }
128 },
129 "required": [
130 "image",
131 "serviceAccount"
132 ]
133 }
134 },
135 "properties": {
136 "imagePullSecrets": {
137 "description": "Secrets used for pulling images",
138 "type": "array",
139 "items": {
140 "type": "object",
141 "properties": {
142 "name": {
143 "type": "string"
144 }
145 },
146 "required": [ "name" ],
147 "additionalProperties": false
148 }
149 },
150 "nameOverride": {
151 "description": "Override chart name",
152 "type": "string"
153 },
154 "fullNameOverride": {
155 "description": "Override fully qualified app name",
156 "type": "string"
157 },
158 "configInLine": {
159 "description": "MetalLB configuration",
160 "type": "object"
161 },
162 "loadBalancerClass": {
163 "type":"string"
164 },
165 "rbac": {
166 "description": "RBAC configuration",
167 "type": "object",
168 "properties": {
169 "create": {
170 "description": "Enable RBAC",
171 "type": "boolean"
172 }
173 }
174 },
175 "prometheus": {
176 "description": "Prometheus monitoring config",
177 "type": "object",
178 "properties": {
179 "scrapeAnnotations": { "type": "boolean" },
180 "metricsPort": { "type": "integer" },
181 "secureMetricsPort": { "type": "integer" },
182 "rbacPrometheus": { "type": "boolean" },
183 "serviceAccount": { "type": "string" },
184 "namespace": { "type": "string" },
185 "rbacProxy": {
186 "description": "kube-rbac-proxy configuration",
187 "type": "object",
188 "properties": {
189 "repository": { "type": "string" },
190 "tag": { "type": "string" }
191 }
192 },
193 "podMonitor": {
194 "description": "Prometheus Operator PodMonitors",
195 "type": "object",
196 "properties": {
197 "enabled": { "type": "boolean" },
198 "additionalMonitors": { "type": "object" },
199 "jobLabel": { "type": "string" },
200 "interval": {
201 "anyOf": [
202 { "type": "integer" },
203 { "type": "null" }
204 ]
205 },
206 "metricRelabelings": {
207 "type": "array",
208 "items": {
209 "type": "object"
210 }
211 },
212 "relabelings": {
213 "type": "array",
214 "items": {
215 "type": "object"
216 }
217 }
218 }
219 },
220 "serviceMonitor": {
221 "description": "Prometheus Operator ServiceMonitors",
222 "type": "object",
223 "properties": {
224 "enabled": { "type": "boolean" },
225 "jobLabel": { "type": "string" },
226 "interval": {
227 "anyOf": [
228 { "type": "integer" },
229 { "type": "null" }
230 ]
231 },
232 "metricRelabelings": {
233 "type": "array",
234 "items": {
235 "type": "object"
236 }
237 },
238 "relabelings": {
239 "type": "array",
240 "items": {
241 "type": "object"
242 }
243 }
244 }
245 },
246 "prometheusRule": {
247 "description": "Prometheus Operator alertmanager alerts",
248 "type": "object",
249 "properties": {
250 "enabled": { "type": "boolean" },
251 "additionalMonitors": { "type": "object" },
252 "staleConfig": { "$ref": "#/definitions/prometheusAlert" },
253 "configNotLoaded": { "$ref": "#/definitions/prometheusAlert" },
254 "addressPoolExhausted": { "$ref": "#/definitions/prometheusAlert" },
255 "addressPoolUsage": {
256 "type": "object",
257 "properties": {
258 "enabled": {
259 "type": "boolean"
260 },
261 "thresholds": {
262 "type": "array",
263 "items": {
264 "type": "object",
265 "properties": {
266 "percent": {
267 "type": "integer",
268 "minimum": 0,
269 "maximum": 100
270 },
271 "labels": {
272 "type": "object",
273 "additionalProperties": { "type": "string" }
274 }
275 },
276 "required": [ "percent" ]
277 }
278 }
279 },
280 "required": [ "enabled" ]
281 },
282 "bgpSessionDown": { "$ref": "#/definitions/prometheusAlert" },
283 "extraAlerts": {
284 "type": "array",
285 "items": {
286 "type": "object"
287 }
288 }
289 },
290 "required": [
291 "enabled",
292 "staleConfig",
293 "configNotLoaded",
294 "addressPoolExhausted",
295 "addressPoolUsage",
296 "bgpSessionDown"
297 ]
298 }
299 },
300 "required": [ "podMonitor", "prometheusRule" ]
301 },
302 "speaker": {
303 "allOf": [
304 { "$ref": "#/definitions/component" },
305 { "description": "MetalLB Speaker",
306 "type": "object",
307 "properties": {
308 "tolerateMaster": {
309 "type": "boolean"
310 },
311 "memberlist": {
312 "type": "object",
313 "properties": {
314 "enabled": {
315 "type": "boolean"
316 },
317 "mlBindPort": {
318 "type": "integer"
319 },
320 "mlSecretKeyPath": {
321 "type": "string"
322 }
323 }
324 },
325 "excludeInterfaces": {
326 "type": "object",
327 "properties": {
328 "enabled": {
329 "type": "boolean"
330 }
331 }
332 },
333 "updateStrategy": {
334 "type": "object",
335 "properties": {
336 "type": {
337 "type": "string"
338 }
339 },
340 "required": [ "type" ]
341 },
342 "runtimeClassName": {
343 "type": "string"
344 },
345 "secretName": {
346 "type": "string"
347 },
348 "frr": {
349 "description": "Install FRR container in speaker deployment",
350 "type": "object",
351 "properties": {
352 "enabled": {
353 "type": "boolean"
354 },
355 "image": { "$ref": "#/definitions/component/properties/image" },
356 "metricsPort": { "type": "integer" },
357 "secureMetricsPort": { "type": "integer" },
358 "resources:": { "type": "object" }
359 },
360 "required": [ "enabled" ]
361 },
362 "command" : {
363 "type": "string"
364 },
365 "reloader": {
366 "type": "object",
367 "properties": {
368 "resources": { "type": "object" }
369 }
370 },
371 "frrMetrics": {
372 "type": "object",
373 "properties": {
374 "resources": { "type": "object" }
375 }
376 }
377 },
378 "required": [ "tolerateMaster" ]
379 }
380 ]
381 },
382 "crds": {
383 "description": "CRD configuration",
384 "type": "object",
385 "properties": {
386 "enabled": {
387 "description": "Enable CRDs",
388 "type": "boolean"
389 },
390 "validationFailurePolicy": {
391 "description": "Failure policy to use with validating webhooks",
392 "type": "string",
393 "enum": [ "Ignore", "Fail" ]
394 }
395 }
396 }
397 },
398 "controller": {
399 "allOf": [
400 { "$ref": "#/definitions/component" },
401 { "description": "MetalLB Controller",
402 "type": "object",
403 "properties": {
404 "strategy": {
405 "type": "object",
406 "properties": {
407 "type": {
408 "type": "string"
409 }
410 },
411 "required": [ "type" ]
412 },
413 "command" : {
414 "type": "string"
415 },
416 "webhookMode" : {
417 "type": "string"
418 }
419 }
420 }
421 ]
422 },
423 "required": [
424 "controller",
425 "speaker"
426 ]
427}