Skip to content

Commit 260976b

Browse files
Chart: Implement ServiceMonitor limits. (#12251)
1 parent d0a0430 commit 260976b

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed

charts/ingress-nginx/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,12 +399,17 @@ metadata:
399399
| controller.metrics.serviceMonitor.additionalLabels | object | `{}` | |
400400
| controller.metrics.serviceMonitor.annotations | object | `{}` | Annotations to be added to the ServiceMonitor. |
401401
| controller.metrics.serviceMonitor.enabled | bool | `false` | |
402+
| controller.metrics.serviceMonitor.labelLimit | int | `0` | Per-scrape limit on number of labels that will be accepted for a sample. |
403+
| controller.metrics.serviceMonitor.labelNameLengthLimit | int | `0` | Per-scrape limit on length of labels name that will be accepted for a sample. |
404+
| controller.metrics.serviceMonitor.labelValueLengthLimit | int | `0` | Per-scrape limit on length of labels value that will be accepted for a sample. |
402405
| controller.metrics.serviceMonitor.metricRelabelings | list | `[]` | |
403406
| controller.metrics.serviceMonitor.namespace | string | `""` | |
404407
| controller.metrics.serviceMonitor.namespaceSelector | object | `{}` | |
405408
| controller.metrics.serviceMonitor.relabelings | list | `[]` | |
409+
| controller.metrics.serviceMonitor.sampleLimit | int | `0` | Defines a per-scrape limit on the number of scraped samples that will be accepted. |
406410
| controller.metrics.serviceMonitor.scrapeInterval | string | `"30s"` | |
407411
| controller.metrics.serviceMonitor.targetLabels | list | `[]` | |
412+
| controller.metrics.serviceMonitor.targetLimit | int | `0` | Defines a limit on the number of scraped targets that will be accepted. |
408413
| controller.minAvailable | int | `1` | Minimum available pods set in PodDisruptionBudget. Define either 'minAvailable' or 'maxUnavailable', never both. |
409414
| controller.minReadySeconds | int | `0` | `minReadySeconds` to avoid killing pods before we are ready # |
410415
| controller.name | string | `"controller"` | |

charts/ingress-nginx/templates/controller-servicemonitor.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,19 @@ spec:
4747
{{- if .Values.controller.metrics.serviceMonitor.targetLabels }}
4848
targetLabels: {{ toYaml .Values.controller.metrics.serviceMonitor.targetLabels | nindent 2 }}
4949
{{- end }}
50+
{{- if .Values.controller.metrics.serviceMonitor.labelLimit }}
51+
labelLimit: {{ .Values.controller.metrics.serviceMonitor.labelLimit }}
52+
{{- end }}
53+
{{- if .Values.controller.metrics.serviceMonitor.labelNameLengthLimit }}
54+
labelNameLengthLimit: {{ .Values.controller.metrics.serviceMonitor.labelNameLengthLimit }}
55+
{{- end }}
56+
{{- if .Values.controller.metrics.serviceMonitor.labelValueLengthLimit }}
57+
labelValueLengthLimit: {{ .Values.controller.metrics.serviceMonitor.labelValueLengthLimit }}
58+
{{- end }}
59+
{{- if .Values.controller.metrics.serviceMonitor.sampleLimit }}
60+
sampleLimit: {{ .Values.controller.metrics.serviceMonitor.sampleLimit }}
61+
{{- end }}
62+
{{- if .Values.controller.metrics.serviceMonitor.targetLimit }}
63+
targetLimit: {{ .Values.controller.metrics.serviceMonitor.targetLimit }}
64+
{{- end }}
5065
{{- end }}

charts/ingress-nginx/tests/controller-servicemonitor_test.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,53 @@ tests:
2727
path: metadata.annotations
2828
value:
2929
my-little-annotation: test-value
30+
31+
- it: should create a ServiceMonitor with `labelLimit` if `controller.metrics.serviceMonitor.labelLimit` is set
32+
set:
33+
controller.metrics.enabled: true
34+
controller.metrics.serviceMonitor.enabled: true
35+
controller.metrics.serviceMonitor.labelLimit: 20
36+
asserts:
37+
- equal:
38+
path: spec.labelLimit
39+
value: 20
40+
41+
- it: should create a ServiceMonitor with `labelNameLengthLimit` if `controller.metrics.serviceMonitor.labelNameLengthLimit` is set
42+
set:
43+
controller.metrics.enabled: true
44+
controller.metrics.serviceMonitor.enabled: true
45+
controller.metrics.serviceMonitor.labelNameLengthLimit: 50
46+
asserts:
47+
- equal:
48+
path: spec.labelNameLengthLimit
49+
value: 50
50+
51+
- it: should create a ServiceMonitor with `labelValueLengthLimit` if `controller.metrics.serviceMonitor.labelValueLengthLimit` is set
52+
set:
53+
controller.metrics.enabled: true
54+
controller.metrics.serviceMonitor.enabled: true
55+
controller.metrics.serviceMonitor.labelValueLengthLimit: 50
56+
asserts:
57+
- equal:
58+
path: spec.labelValueLengthLimit
59+
value: 50
60+
61+
- it: should create a ServiceMonitor with `sampleLimit` if `controller.metrics.serviceMonitor.sampleLimit` is set
62+
set:
63+
controller.metrics.enabled: true
64+
controller.metrics.serviceMonitor.enabled: true
65+
controller.metrics.serviceMonitor.sampleLimit: 5000
66+
asserts:
67+
- equal:
68+
path: spec.sampleLimit
69+
value: 5000
70+
71+
- it: should create a ServiceMonitor with `targetLimit` if `controller.metrics.serviceMonitor.targetLimit` is set
72+
set:
73+
controller.metrics.enabled: true
74+
controller.metrics.serviceMonitor.enabled: true
75+
controller.metrics.serviceMonitor.targetLimit: 100
76+
asserts:
77+
- equal:
78+
path: spec.targetLimit
79+
value: 100

charts/ingress-nginx/values.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,16 @@ controller:
882882
targetLabels: []
883883
relabelings: []
884884
metricRelabelings: []
885+
# -- Per-scrape limit on number of labels that will be accepted for a sample.
886+
labelLimit: 0
887+
# -- Per-scrape limit on length of labels name that will be accepted for a sample.
888+
labelNameLengthLimit: 0
889+
# -- Per-scrape limit on length of labels value that will be accepted for a sample.
890+
labelValueLengthLimit: 0
891+
# -- Defines a per-scrape limit on the number of scraped samples that will be accepted.
892+
sampleLimit: 0
893+
# -- Defines a limit on the number of scraped targets that will be accepted.
894+
targetLimit: 0
885895
prometheusRule:
886896
enabled: false
887897
additionalLabels: {}

0 commit comments

Comments
 (0)