DirectorySecurity AdvisoriesPricing
Sign in
Directory
kube-prometheus-stack logoHELM

kube-prometheus-stack

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Default values for kube-prometheus-stack.
2
# This is a YAML-formatted file.
3
# Declare variables to be passed into your templates.
4
5
## Provide a name in place of kube-prometheus-stack for `app:` labels
6
##
7
nameOverride: ""
8
## Override the deployment namespace
9
##
10
namespaceOverride: ""
11
## Provide a k8s version to auto dashboard import script example: kubeTargetVersionOverride: 1.26.6
12
##
13
kubeTargetVersionOverride: ""
14
## Allow kubeVersion to be overridden while creating the ingress
15
##
16
kubeVersionOverride: ""
17
## Provide a name to substitute for the full names of resources
18
##
19
fullnameOverride: ""
20
## Labels to apply to all resources
21
##
22
commonLabels: {}
23
# scmhash: abc123
24
# myLabel: aakkmd
25
26
## Install Prometheus Operator CRDs
27
##
28
crds:
29
enabled: true
30
## The CRD upgrade job mitigates the limitation of helm not being able to upgrade CRDs.
31
## The job will apply the CRDs to the cluster before the operator is deployed, using helm hooks.
32
## It deploys a corresponding clusterrole, clusterrolebinding and serviceaccount to apply the CRDs.
33
## This feature is in preview, off by default and may change in the future.
34
upgradeJob:
35
enabled: false
36
## Force apply the CRDs, taking ownership from the manager that installed them (e.g. helm).
37
## Required for the job to actually upgrade CRDs whose schema/version changed.
38
forceConflicts: true
39
image:
40
busybox:
41
registry: cgr.dev
42
repository: chainguard-private/busybox
43
tag: glibc-1.38.0-r3@sha256:82374f77edfec3d662c9c1531031c7be1c2d1fe8ea9191cb4424148ac71e0807
44
sha: ""
45
pullPolicy: IfNotPresent
46
kubectl:
47
registry: cgr.dev
48
repository: chainguard-private/kubectl
49
tag: 1.37.2-r1
50
sha: sha256:18af9c252f6ea399b0f513332a336cb8481b0270e30987179fc46b69dd286499
51
pullPolicy: IfNotPresent
52
env: {}
53
## Define resources requests and limits for single Pods.
54
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
55
##
56
resources: {}
57
## Additional volumes
58
##
59
extraVolumes: []
60
## Additional volume mounts
61
##
62
extraVolumeMounts: []
63
## Define which Nodes the Pods are scheduled on.
64
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
65
##
66
nodeSelector:
67
kubernetes.io/os: linux
68
## Assign custom affinity rules to the upgrade-crd job
69
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
70
##
71
affinity: {}
72
# nodeAffinity:
73
# requiredDuringSchedulingIgnoredDuringExecution:
74
# nodeSelectorTerms:
75
# - matchExpressions:
76
# - key: kubernetes.io/e2e-az-name
77
# operator: In
78
# values:
79
# - e2e-az1
80
# - e2e-az2
81
82
## If specified, the pod's tolerations.
83
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
84
##
85
tolerations: []
86
# - key: "key"
87
# operator: "Equal"
88
# value: "value"
89
# effect: "NoSchedule"
90
91
## If specified, the pod's topology spread constraints.
92
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
93
##
94
topologySpreadConstraints: []
95
# - maxSkew: 1
96
# topologyKey: topology.kubernetes.io/zone
97
# whenUnsatisfiable: DoNotSchedule
98
# labelSelector:
99
# matchLabels:
100
# app: alertmanager
101
102
# ## Labels to add to the upgrade-crd job
103
# ##
104
labels: {}
105
## Annotations to add to the upgrade-crd job
106
##
107
annotations: {}
108
## Labels to add to the upgrade-crd pod
109
##
110
podLabels: {}
111
## Annotations to add to the upgrade-crd pod
112
##
113
podAnnotations: {}
114
## Service account for upgrade crd job to use.
115
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
116
##
117
serviceAccount:
118
create: true
119
name: ""
120
annotations: {}
121
labels: {}
122
automountServiceAccountToken: true
123
## Automounting API credentials for upgrade crd job pod.
124
##
125
automountServiceAccountToken: true
126
## Container-specific security context configuration
127
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
128
##
129
containerSecurityContext:
130
allowPrivilegeEscalation: false
131
readOnlyRootFilesystem: true
132
capabilities:
133
drop:
134
- ALL
135
## SecurityContext holds pod-level security attributes and common container settings.
136
## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false
137
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
138
##
139
podSecurityContext:
140
fsGroup: 65534
141
runAsGroup: 65534
142
runAsNonRoot: true
143
runAsUser: 65534
144
seccompProfile:
145
type: RuntimeDefault
146
## Custom rules to override "for" and "severity" in defaultRules
147
##
148
customRules: {}
149
# AlertmanagerFailedReload:
150
# for: 3m
151
# AlertmanagerMembersInconsistent:
152
# for: 5m
153
# severity: "warning"
154
155
## Create default rules for monitoring the cluster
156
##
157
defaultRules:
158
create: true
159
rules:
160
alertmanager: true
161
etcd: true
162
configReloaders: true
163
general: true
164
k8sContainerCpuUsageSecondsTotal: true
165
k8sContainerMemoryCache: true
166
k8sContainerMemoryRss: true
167
k8sContainerMemorySwap: true
168
k8sContainerResource: true
169
k8sContainerMemoryWorkingSetBytes: true
170
k8sPodOwner: true
171
kubeApiserverAvailability: true
172
kubeApiserverBurnrate: true
173
kubeApiserverHistogram: true
174
kubeApiserverSlos: true
175
kubeControllerManager: true
176
kubelet: true
177
kubeProxy: true
178
kubePrometheusGeneral: true
179
kubePrometheusNodeRecording: true
180
kubernetesApps: true
181
kubernetesResources: true
182
kubernetesStorage: true
183
kubernetesSystem: true
184
kubeSchedulerAlerting: true
185
kubeSchedulerRecording: true
186
kubeStateMetrics: true
187
network: true
188
node: true
189
nodeExporterAlerting: true
190
nodeExporterRecording: true
191
prometheus: true
192
prometheusOperator: true
193
windows: true
194
# Defines the operator for namespace selection in rules
195
# Use "=~" to include namespaces matching the pattern (default)
196
# Use "!~" to exclude namespaces matching the pattern
197
appNamespacesOperator: "=~"
198
## Reduce app namespace alert scope
199
appNamespacesTarget: ".*"
200
## Set keep_firing_for for all alerts
201
keepFiringFor: ""
202
## Labels for default rules
203
labels: {}
204
## Annotations for default rules
205
annotations: {}
206
## Additional labels for PrometheusRule alerts
207
additionalRuleLabels: {}
208
## Additional annotations for specific PrometheusRule alerts by alert name
209
additionalRuleAnnotations: {}
210
## Additional labels for specific PrometheusRule alert groups
211
additionalRuleGroupLabels:
212
alertmanager: {}
213
etcd: {}
214
configReloaders: {}
215
general: {}
216
k8sContainerCpuUsageSecondsTotal: {}
217
k8sContainerMemoryCache: {}
218
k8sContainerMemoryRss: {}
219
k8sContainerMemorySwap: {}
220
k8sContainerResource: {}
221
k8sPodOwner: {}
222
kubeApiserverAvailability: {}
223
kubeApiserverBurnrate: {}
224
kubeApiserverHistogram: {}
225
kubeApiserverSlos: {}
226
kubeControllerManager: {}
227
kubelet: {}
228
kubeProxy: {}
229
kubePrometheusGeneral: {}
230
kubePrometheusNodeRecording: {}
231
kubernetesApps: {}
232
kubernetesResources: {}
233
kubernetesStorage: {}
234
kubernetesSystem: {}
235
kubeSchedulerAlerting: {}
236
kubeSchedulerRecording: {}
237
kubeStateMetrics: {}
238
network: {}
239
node: {}
240
nodeExporterAlerting: {}
241
nodeExporterRecording: {}
242
prometheus: {}
243
prometheusOperator: {}
244
## Additional annotations for specific PrometheusRule alert groups
245
additionalRuleGroupAnnotations:
246
alertmanager: {}
247
etcd: {}
248
configReloaders: {}
249
general: {}
250
k8sContainerCpuUsageSecondsTotal: {}
251
k8sContainerMemoryCache: {}
252
k8sContainerMemoryRss: {}
253
k8sContainerMemorySwap: {}
254
k8sContainerResource: {}
255
k8sPodOwner: {}
256
kubeApiserverAvailability: {}
257
kubeApiserverBurnrate: {}
258
kubeApiserverHistogram: {}
259
kubeApiserverSlos: {}
260
kubeControllerManager: {}
261
kubelet: {}
262
kubeProxy: {}
263
kubePrometheusGeneral: {}
264
kubePrometheusNodeRecording: {}
265
kubernetesApps: {}
266
kubernetesResources: {}
267
kubernetesStorage: {}
268
kubernetesSystem: {}
269
kubeSchedulerAlerting: {}
270
kubeSchedulerRecording: {}
271
kubeStateMetrics: {}
272
network: {}
273
node: {}
274
nodeExporterAlerting: {}
275
nodeExporterRecording: {}
276
prometheus: {}
277
prometheusOperator: {}
278
additionalAggregationLabels: []
279
## Prefix for runbook URLs. Use this to override the first part of the runbookURLs that is common to all rules.
280
runbookUrl: "https://runbooks.prometheus-operator.dev/runbooks"
281
## Thresholds for kubelet certificate expiration alerts (in seconds)
282
kubeletServerCertificateExpiration:
283
warning: 604800 # 7 days
284
critical: 86400 # 1 day
285
kubeletClientCertificateExpiration:
286
warning: 604800 # 7 days
287
critical: 86400 # 1 day
288
node:
289
fsSelector: 'fstype!=""'
290
# fsSelector: 'fstype=~"ext[234]|btrfs|xfs|zfs"'
291
## Disabled PrometheusRule alerts
292
disabled: {}
293
# KubeAPIDown: true
294
# NodeRAIDDegraded: true
295
## Deprecated way to provide custom recording or alerting rules to be deployed into the cluster.
296
##
297
# additionalPrometheusRules: []
298
# - name: my-rule-file
299
# groups:
300
# - name: my_group
301
# rules:
302
# - record: my_record
303
# expr: 100 * my_record
304
305
## Provide custom recording or alerting rules to be deployed into the cluster.
306
##
307
additionalPrometheusRulesMap: {}
308
# rule-name:
309
# groups:
310
# - name: my_group
311
# rules:
312
# - record: my_record
313
# expr: 100 * my_record
314
315
##
316
global:
317
rbac:
318
create: true
319
## Create ClusterRoles that extend the existing view, edit and admin ClusterRoles to interact with prometheus-operator CRDs
320
## Ref: https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles
321
createAggregateClusterRoles: false
322
## Global image registry to use if it needs to be overridden for some specific use cases (e.g. local registries, custom images, ...)
323
##
324
imageRegistry: ""
325
## Reference to one or more secrets to be used when pulling images
326
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
327
##
328
imagePullSecrets: []
329
# - name: "image-pull-secret"
330
# or
331
# - "image-pull-secret"
332
windowsMonitoring:
333
## Deploys the windows-exporter and Windows-specific dashboards and rules (job name must be 'windows-exporter')
334
enabled: false
335
## Configuration for prometheus-windows-exporter
336
## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-windows-exporter
337
##
338
prometheus-windows-exporter:
339
## Enable ServiceMonitor and set Kubernetes label to use as a job label
340
##
341
prometheus:
342
monitor:
343
enabled: true
344
jobLabel: jobLabel
345
releaseLabel: true
346
## Set job label to 'windows-exporter' as required by the default Prometheus rules and Grafana dashboards
347
##
348
podLabels:
349
jobLabel: windows-exporter
350
## Enable memory and container metrics as required by the default Prometheus rules and Grafana dashboards
351
##
352
config: |-
353
collectors:
354
enabled: '[defaults],memory,container'
355
## Configuration for alertmanager
356
## ref: https://prometheus.io/docs/alerting/alertmanager/
357
##
358
alertmanager:
359
## Deploy alertmanager
360
##
361
enabled: true
362
# Optional: Override the namespace where Alertmanager will be deployed.
363
namespaceOverride: ""
364
## Annotations for Alertmanager
365
##
366
annotations: {}
367
## Additional labels for Alertmanager
368
##
369
additionalLabels: {}
370
## API that Prometheus will use to communicate with alertmanager. Possible values are v1, v2
371
##
372
apiVersion: v2
373
## @param alertmanager.enableFeatures Enable access to Alertmanager disabled features.
374
##
375
enableFeatures: []
376
## Create dashboard configmap even if alertmanager deployment has been disabled
377
##
378
forceDeployDashboards: false
379
## Network Policy configuration
380
##
381
networkPolicy:
382
# -- Enable network policy for Alertmanager
383
enabled: false
384
# -- Define policy types. If egress is enabled, both Ingress and Egress will be used
385
# Valid values are ["Ingress"] or ["Ingress", "Egress"]
386
##
387
policyTypes:
388
- Ingress
389
# -- Gateway (formerly ingress controller) configuration
390
##
391
gateway:
392
# -- Gateway namespace
393
##
394
namespace: ""
395
# -- Gateway pod labels
396
##
397
podLabels: {}
398
# app.kubernetes.io/name: ingress-nginx
399
# -- Additional custom ingress rules
400
##
401
additionalIngress: []
402
# - from:
403
# - namespaceSelector:
404
# matchLabels:
405
# name: another-namespace
406
# podSelector:
407
# matchLabels:
408
# app: another-app
409
# - from:
410
# - podSelector:
411
# matchLabels:
412
# app.kubernetes.io/name: loki
413
# ports:
414
# - port: 9093
415
# protocol: TCP
416
417
# -- Configure egress rules
418
##
419
egress:
420
# -- Enable egress rules. When enabled, policyTypes will include Egress
421
##
422
enabled: false
423
# -- Custom egress rules
424
##
425
rules: []
426
# - to:
427
# - namespaceSelector: {}
428
# podSelector:
429
# matchLabels:
430
# name: smtp-relay
431
# ports:
432
# - port: 25
433
# protocol: TCP
434
# -- Enable rules for alertmanager cluster traffic
435
##
436
enableClusterRules: true
437
# -- Configure monitoring component rules
438
##
439
monitoringRules:
440
# -- Enable ingress from Prometheus
441
##
442
prometheus: true
443
# -- Enable ingress for config reloader metrics
444
##
445
configReloader: true
446
## Service account for Alertmanager to use.
447
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
448
##
449
serviceAccount:
450
create: true
451
name: ""
452
annotations: {}
453
automountServiceAccountToken: true
454
## Configure pod disruption budgets for Alertmanager
455
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
456
##
457
podDisruptionBudget:
458
enabled: false
459
minAvailable: 1
460
# maxUnavailable: ""
461
unhealthyPodEvictionPolicy: AlwaysAllow
462
## Enable vertical pod autoscaler support for Alertmanager
463
## ref: https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler
464
##
465
verticalPodAutoscaler:
466
enabled: false
467
# Recommender responsible for generating recommendation for the object.
468
# List should be empty (then the default recommender will generate the recommendation)
469
# or contain exactly one recommender.
470
# recommenders:
471
# - name: custom-recommender-performance
472
473
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
474
controlledResources: []
475
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
476
# controlledValues: RequestsAndLimits
477
478
# Define the max allowed resources for the pod
479
maxAllowed: {}
480
# cpu: 200m
481
# memory: 100Mi
482
# Define the min allowed resources for the pod
483
minAllowed: {}
484
# cpu: 200m
485
# memory: 100Mi
486
487
updatePolicy:
488
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
489
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "InPlaceOrRecreate".
490
updateMode: Recreate
491
## Alertmanager configuration directives
492
## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file
493
## https://prometheus.io/webtools/alerting/routing-tree-editor/
494
##
495
config:
496
global:
497
resolve_timeout: 5m
498
inhibit_rules:
499
- source_matchers:
500
- 'severity = critical'
501
target_matchers:
502
- 'severity =~ warning|info'
503
equal:
504
- 'namespace'
505
- 'alertname'
506
- source_matchers:
507
- 'severity = warning'
508
target_matchers:
509
- 'severity = info'
510
equal:
511
- 'namespace'
512
- 'alertname'
513
- source_matchers:
514
- 'alertname = InfoInhibitor'
515
target_matchers:
516
- 'severity = info'
517
equal:
518
- 'namespace'
519
- target_matchers:
520
- 'alertname = InfoInhibitor'
521
route:
522
group_by: ['namespace']
523
group_wait: 30s
524
group_interval: 5m
525
repeat_interval: 12h
526
receiver: 'null'
527
routes:
528
- receiver: 'null'
529
matchers:
530
- alertname = "Watchdog"
531
receivers:
532
- name: 'null'
533
templates:
534
- '/etc/alertmanager/config/*.tmpl'
535
## Alertmanager configuration directives (as string type, preferred over the config hash map)
536
## stringConfig will be used only if tplConfig is true
537
## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file
538
## https://prometheus.io/webtools/alerting/routing-tree-editor/
539
##
540
stringConfig: ""
541
## Pass the Alertmanager configuration directives through Helm's templating
542
## engine. If the Alertmanager configuration contains Alertmanager templates,
543
## they'll need to be properly escaped so that they are not interpreted by
544
## Helm
545
## ref: https://helm.sh/docs/developing_charts/#using-the-tpl-function
546
## https://prometheus.io/docs/alerting/configuration/#tmpl_string
547
## https://prometheus.io/docs/alerting/notifications/
548
## https://prometheus.io/docs/alerting/notification_examples/
549
tplConfig: false
550
## Alertmanager template files to format alerts
551
## By default, templateFiles are placed in /etc/alertmanager/config/ and if
552
## they have a .tmpl file suffix will be loaded. See config.templates above
553
## to change, add other suffixes. If adding other suffixes, be sure to update
554
## config.templates above to include those suffixes.
555
## ref: https://prometheus.io/docs/alerting/notifications/
556
## https://prometheus.io/docs/alerting/notification_examples/
557
##
558
templateFiles: {}
559
#
560
## An example template:
561
# template_1.tmpl: |-
562
# {{ define "cluster" }}{{ .ExternalURL | reReplaceAll ".*alertmanager\\.(.*)" "$1" }}{{ end }}
563
#
564
# {{ define "slack.myorg.text" }}
565
# {{- $root := . -}}
566
# {{ range .Alerts }}
567
# *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`
568
# *Cluster:* {{ template "cluster" $root }}
569
# *Description:* {{ .Annotations.description }}
570
# *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>
571
# *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:>
572
# *Details:*
573
# {{ range .Labels.SortedPairs }} - *{{ .Name }}:* `{{ .Value }}`
574
# {{ end }}
575
# {{ end }}
576
# {{ end }}
577
578
ingress:
579
enabled: false
580
ingressClassName: ""
581
annotations: {}
582
labels: {}
583
## Override ingress to a different defined port on the service
584
# servicePort: 8081
585
## Override ingress to a different service then the default, this is useful if you need to
586
## point to a specific instance of the alertmanager (eg kube-prometheus-stack-alertmanager-0)
587
# serviceName: kube-prometheus-stack-alertmanager-0
588
589
## Hosts must be provided if Ingress is enabled.
590
##
591
hosts: []
592
# - alertmanager.domain.com
593
594
## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix
595
##
596
paths: []
597
# - /
598
599
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
600
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
601
# pathType: ImplementationSpecific
602
603
## TLS configuration for Alertmanager Ingress
604
## Secret must be manually created in the namespace
605
##
606
tls: []
607
# - secretName: alertmanager-general-tls
608
# hosts:
609
# - alertmanager.example.com
610
# -- BETA: Configure the gateway routes for the chart here.
611
# More routes can be added by adding a dictionary key like the 'main' route.
612
# Be aware that this is an early beta of this feature,
613
# kube-prometheus-stack does not guarantee this works and is subject to change.
614
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
615
# [[ref]](https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/#gatewaynetworkingk8siov1alpha2)
616
route:
617
main:
618
# -- Enables or disables the route
619
enabled: false
620
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
621
apiVersion: gateway.networking.k8s.io/v1
622
# -- Set the route kind
623
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
624
kind: HTTPRoute
625
annotations: {}
626
labels: {}
627
hostnames: []
628
# - my-filter.example.com
629
parentRefs: []
630
# - name: acme-gw
631
632
# -- create http route for redirect (https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/#http-to-https-redirects)
633
## Take care that you only enable this on the http listener of the gateway to avoid an infinite redirect.
634
## matches, filters and additionalRules will be ignored if this is set to true. Be are
635
httpsRedirect: false
636
matches:
637
- path:
638
type: PathPrefix
639
value: /
640
## Filters define the filters that are applied to requests that match this rule.
641
filters: []
642
## Timeouts for the generated HTTPRoute backend rule.
643
## Requires Gateway API CRDs and a controller that support HTTPRoute timeouts.
644
timeouts: {}
645
# request: 120s
646
# backendRequest: 60s
647
648
## Session persistence configuration for the route rule.
649
sessionPersistence: {}
650
# sessionName: route
651
# type: Cookie
652
# absoluteTimeout: 12h
653
# cookieConfig:
654
# lifetimeType: Permanent
655
656
## Additional custom rules that can be added to the route
657
additionalRules: []
658
## Configuration for Alertmanager secret
659
##
660
secret:
661
annotations: {}
662
## Configuration for creating an Ingress that will map to each Alertmanager replica service
663
## alertmanager.servicePerReplica must be enabled
664
##
665
ingressPerReplica:
666
enabled: false
667
ingressClassName: ""
668
annotations: {}
669
labels: {}
670
## Final form of the hostname for each per replica ingress is
671
## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }}
672
##
673
## Prefix for the per replica ingress that will have `-$replicaNumber`
674
## appended to the end
675
hostPrefix: ""
676
## Domain that will be used for the per replica ingress
677
hostDomain: ""
678
## Paths to use for ingress rules
679
##
680
paths: []
681
# - /
682
683
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
684
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
685
# pathType: ImplementationSpecific
686
687
## Secret name containing the TLS certificate for alertmanager per replica ingress
688
## Secret must be manually created in the namespace
689
tlsSecretName: ""
690
## Separated secret for each per replica Ingress. Can be used together with cert-manager
691
##
692
tlsSecretPerReplica:
693
enabled: false
694
## Final form of the secret for each per replica ingress is
695
## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}
696
##
697
prefix: "alertmanager"
698
## Configuration for creating a Gateway API route that will map to each Alertmanager replica service
699
## alertmanager.servicePerReplica must be enabled
700
##
701
routePerReplica:
702
main:
703
# -- Enables or disables the routePerReplica
704
enabled: false
705
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
706
apiVersion: gateway.networking.k8s.io/v1
707
# -- Set the route kind
708
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
709
kind: HTTPRoute
710
annotations: {}
711
labels: {}
712
## Final form of the hostname for each per replica route is
713
## {{ routePerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ routePerReplica.hostDomain }}
714
##
715
## Prefix for the per replica route that will have `-$replicaNumber` appended to the end
716
hostPrefix: ""
717
## Domain that will be used for the per replica route
718
hostDomain: ""
719
parentRefs: []
720
# - name: acme-gw
721
722
# -- create http route for redirect (https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/#http-to-https-redirects)
723
## Take care that you only enable this on the http listener of the gateway to avoid an infinite redirect.
724
## matches, filters and additionalRules will be ignored if this is set to true.
725
httpsRedirect: false
726
## Filters define the filters that are applied to requests that match this rule.
727
filters: []
728
matches:
729
- path:
730
type: PathPrefix
731
value: /
732
## Timeouts for the generated HTTPRoute backend rule.
733
## Requires Gateway API CRDs and a controller that support HTTPRoute timeouts.
734
timeouts: {}
735
# request: 120s
736
# backendRequest: 60s
737
738
## Session persistence configuration for the route rule.
739
sessionPersistence: {}
740
# sessionName: route
741
# type: Cookie
742
# absoluteTimeout: 12h
743
# cookieConfig:
744
# lifetimeType: Permanent
745
746
## Additional custom rules that can be added to the route
747
additionalRules: []
748
## Configuration for Alertmanager service
749
##
750
service:
751
enabled: true
752
annotations: {}
753
labels: {}
754
clusterIP: ""
755
ipDualStack:
756
enabled: false
757
ipFamilies: ["IPv6", "IPv4"]
758
ipFamilyPolicy: "PreferDualStack"
759
## Port for Alertmanager Service to listen on
760
##
761
port: 9093
762
## Port for Alertmanager cluster communication
763
##
764
# clusterPort: 9094
765
## To be used with a proxy extraContainer port
766
##
767
targetPort: 9093
768
## Port to expose on each node
769
## Only used if service.type is 'NodePort'
770
##
771
nodePort: 30903
772
## List of IP addresses at which the Prometheus server service is available
773
## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
774
##
775
776
## Additional ports to open for Alertmanager service
777
##
778
additionalPorts: []
779
# - name: oauth-proxy
780
# port: 8081
781
# targetPort: 8081
782
# - name: oauth-metrics
783
# port: 8082
784
# targetPort: 8082
785
786
externalIPs: []
787
loadBalancerIP: ""
788
loadBalancerSourceRanges: []
789
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
790
##
791
externalTrafficPolicy: Cluster
792
## If you want to make sure that connections from a particular client are passed to the same Pod each time
793
## Accepts 'ClientIP' or 'None'
794
##
795
sessionAffinity: None
796
## If you want to modify the ClientIP sessionAffinity timeout
797
## The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP"
798
##
799
sessionAffinityConfig:
800
clientIP:
801
timeoutSeconds: 10800
802
## Service type
803
##
804
type: ClusterIP
805
## Configuration for creating a separate Service for each statefulset Alertmanager replica
806
##
807
servicePerReplica:
808
enabled: false
809
annotations: {}
810
## Port for Alertmanager Service per replica to listen on
811
##
812
port: 9093
813
## To be used with a proxy extraContainer port
814
targetPort: 9093
815
## Port to expose on each node
816
## Only used if servicePerReplica.type is 'NodePort'
817
##
818
nodePort: 30904
819
## Loadbalancer source IP ranges
820
## Only used if servicePerReplica.type is "LoadBalancer"
821
loadBalancerSourceRanges: []
822
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
823
##
824
externalTrafficPolicy: Cluster
825
## Service type
826
##
827
type: ClusterIP
828
## Configuration for creating a ServiceMonitor for AlertManager
829
##
830
serviceMonitor:
831
## If true, a ServiceMonitor will be created for the AlertManager service.
832
##
833
selfMonitor: true
834
## Scrape interval. If not set, the Prometheus default scrape interval is used.
835
##
836
interval: ""
837
## Additional labels
838
##
839
additionalLabels: {}
840
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
841
## If not set, the default scrape class (if any) is used.
842
##
843
scrapeClass: ""
844
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
845
##
846
sampleLimit: 0
847
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
848
##
849
targetLimit: 0
850
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
851
##
852
labelLimit: 0
853
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
854
##
855
labelNameLengthLimit: 0
856
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
857
##
858
labelValueLengthLimit: 0
859
## proxyUrl: URL of a proxy that should be used for scraping.
860
##
861
proxyUrl: ""
862
## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
863
scheme: ""
864
## enableHttp2: Whether to enable HTTP2.
865
## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
866
enableHttp2: true
867
## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
868
## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#tlsconfig
869
tlsConfig: {}
870
bearerTokenFile:
871
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
872
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
873
##
874
metricRelabelings: []
875
# - action: keep
876
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
877
# sourceLabels: [__name__]
878
879
## RelabelConfigs to apply to samples before scraping
880
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
881
##
882
relabelings: []
883
# - sourceLabels: [__meta_kubernetes_pod_node_name]
884
# separator: ;
885
# regex: ^(.*)$
886
# targetLabel: nodename
887
# replacement: $1
888
# action: replace
889
890
## Additional Endpoints
891
##
892
additionalEndpoints: []
893
# - port: oauth-metrics
894
# path: /metrics
895
## Settings affecting alertmanagerSpec
896
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#alertmanagerspec
897
##
898
alertmanagerSpec:
899
## Statefulset's persistent volume claim retention policy
900
## whenDeleted and whenScaled determine whether
901
## statefulset's PVCs are deleted (true) or retained (false)
902
## on scaling down and deleting statefulset, respectively.
903
## Requires Kubernetes version 1.27.0+.
904
## Ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention
905
persistentVolumeClaimRetentionPolicy: {}
906
# whenDeleted: Retain
907
# whenScaled: Retain
908
909
## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata
910
## Metadata Labels and Annotations gets propagated to the Alertmanager pods.
911
##
912
podMetadata: {}
913
##
914
serviceName:
915
## Image of Alertmanager
916
##
917
image:
918
registry: cgr.dev
919
repository: chainguard-private/prometheus-alertmanager
920
tag: 0.34.2-r0
921
sha: sha256:e224581085925e647fae90b76ec8f3eb8a48cb33cfa7464552cb4d058edeb0a6
922
pullPolicy: IfNotPresent
923
## If true then the user will be responsible to provide a secret with alertmanager configuration
924
## So when true the config part will be ignored (including templateFiles) and the one in the secret will be used
925
##
926
useExistingSecret: false
927
## Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the
928
## Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/.
929
##
930
secrets: []
931
## If false then the user will opt out of automounting API credentials.
932
##
933
automountServiceAccountToken: true
934
## ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods.
935
## The ConfigMaps are mounted into /etc/alertmanager/configmaps/.
936
##
937
configMaps: []
938
## ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for
939
## this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config.
940
##
941
# configSecret:
942
943
## WebTLSConfig defines the TLS parameters for HTTPS
944
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#alertmanagerwebspec
945
web: {}
946
## AlertmanagerConfigs to be selected to merge and configure Alertmanager with.
947
##
948
alertmanagerConfigSelector: {}
949
## Example which selects all alertmanagerConfig resources
950
## with label "alertconfig" with values any of "example-config" or "example-config-2"
951
# alertmanagerConfigSelector:
952
# matchExpressions:
953
# - key: alertconfig
954
# operator: In
955
# values:
956
# - example-config
957
# - example-config-2
958
#
959
## Example which selects all alertmanagerConfig resources with label "role" set to "example-config"
960
# alertmanagerConfigSelector:
961
# matchLabels:
962
# role: example-config
963
964
## Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.
965
##
966
alertmanagerConfigNamespaceSelector: {}
967
## Example which selects all namespaces
968
## with label "alertmanagerconfig" with values any of "example-namespace" or "example-namespace-2"
969
# alertmanagerConfigNamespaceSelector:
970
# matchExpressions:
971
# - key: alertmanagerconfig
972
# operator: In
973
# values:
974
# - example-namespace
975
# - example-namespace-2
976
977
## Example which selects all namespaces with label "alertmanagerconfig" set to "enabled"
978
# alertmanagerConfigNamespaceSelector:
979
# matchLabels:
980
# alertmanagerconfig: enabled
981
982
## AlermanagerConfig to be used as top level configuration
983
##
984
alertmanagerConfiguration: {}
985
## Example with select a global alertmanagerconfig
986
# alertmanagerConfiguration:
987
# name: global-alertmanager-Configuration
988
989
## Defines the strategy used by AlertmanagerConfig objects to match alerts. eg:
990
##
991
alertmanagerConfigMatcherStrategy: {}
992
## Example with use OnNamespace strategy
993
# alertmanagerConfigMatcherStrategy:
994
# type: OnNamespace
995
996
## Additional command line arguments to pass to Alertmanager (in addition to those generated by the chart)
997
additionalArgs: []
998
## Define Log Format
999
# Use logfmt (default) or json logging
1000
logFormat: logfmt
1001
## Log level for Alertmanager to be configured with.
1002
##
1003
logLevel: info
1004
## Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the
1005
## running cluster equal to the expected size.
1006
replicas: 1
1007
## Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression
1008
## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).
1009
##
1010
retention: 120h
1011
## Storage is the definition of how storage will be used by the Alertmanager instances.
1012
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/platform/storage.md
1013
##
1014
storage: {}
1015
# volumeClaimTemplate:
1016
# spec:
1017
# storageClassName: gluster
1018
# accessModes: ["ReadWriteOnce"]
1019
# resources:
1020
# requests:
1021
# storage: 50Gi
1022
# selector: {}
1023
1024
## The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. string false
1025
##
1026
externalUrl:
1027
## The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true,
1028
## but the server serves requests under a different route prefix. For example for use with kubectl proxy.
1029
##
1030
routePrefix: /
1031
## scheme: HTTP scheme to use. Can be used with `tlsConfig` for example if using istio mTLS.
1032
scheme: ""
1033
## tlsConfig: TLS configuration to use when connect to the endpoint. For example if using istio mTLS.
1034
## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#tlsconfig
1035
tlsConfig: {}
1036
## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.
1037
##
1038
paused: false
1039
## Define which Nodes the Pods are scheduled on.
1040
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
1041
##
1042
nodeSelector:
1043
kubernetes.io/os: linux
1044
## Define resources requests and limits for single Pods.
1045
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
1046
##
1047
resources: {}
1048
# requests:
1049
# memory: 400Mi
1050
1051
## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.
1052
## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.
1053
## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node.
1054
## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured.
1055
##
1056
podAntiAffinity: "soft"
1057
## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.
1058
## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone
1059
##
1060
podAntiAffinityTopologyKey: kubernetes.io/hostname
1061
## Assign custom affinity rules to the alertmanager instance
1062
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
1063
##
1064
affinity: {}
1065
# nodeAffinity:
1066
# requiredDuringSchedulingIgnoredDuringExecution:
1067
# nodeSelectorTerms:
1068
# - matchExpressions:
1069
# - key: kubernetes.io/e2e-az-name
1070
# operator: In
1071
# values:
1072
# - e2e-az1
1073
# - e2e-az2
1074
1075
## If specified, the pod's tolerations.
1076
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
1077
##
1078
tolerations: []
1079
# - key: "key"
1080
# operator: "Equal"
1081
# value: "value"
1082
# effect: "NoSchedule"
1083
1084
## If specified, the pod's topology spread constraints.
1085
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
1086
##
1087
topologySpreadConstraints: []
1088
# - maxSkew: 1
1089
# topologyKey: topology.kubernetes.io/zone
1090
# whenUnsatisfiable: DoNotSchedule
1091
# labelSelector:
1092
# matchLabels:
1093
# app: alertmanager
1094
1095
## SecurityContext holds pod-level security attributes and common container settings.
1096
## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false
1097
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
1098
##
1099
securityContext:
1100
runAsGroup: 2000
1101
runAsNonRoot: true
1102
runAsUser: 1000
1103
fsGroup: 2000
1104
seccompProfile:
1105
type: RuntimeDefault
1106
## Use the host's user namespace for Alertmanager pods.
1107
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/
1108
hostUsers: ~
1109
## DNS configuration for Alertmanager.
1110
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.PodDNSConfig
1111
dnsConfig: {}
1112
## DNS policy for Alertmanager.
1113
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#dnspolicystring-alias
1114
dnsPolicy: ""
1115
## Enable hostNetwork for Alertmanager.
1116
hostNetwork: ~
1117
## ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP.
1118
## Note this is only for the Alertmanager UI, not the gossip communication.
1119
##
1120
listenLocal: false
1121
## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod.
1122
##
1123
containers: []
1124
# containers:
1125
# - name: oauth-proxy
1126
# image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.5
1127
# args:
1128
# - --upstream=http://127.0.0.1:9093
1129
# - --http-address=0.0.0.0:8081
1130
# - --metrics-address=0.0.0.0:8082
1131
# - ...
1132
# ports:
1133
# - containerPort: 8081
1134
# name: oauth-proxy
1135
# protocol: TCP
1136
# - containerPort: 8082
1137
# name: oauth-metrics
1138
# protocol: TCP
1139
# resources: {}
1140
1141
# Additional volumes on the output StatefulSet definition.
1142
volumes: []
1143
# Additional VolumeMounts on the output StatefulSet definition.
1144
volumeMounts: []
1145
## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes
1146
## (permissions, dir tree) on mounted volumes before starting prometheus
1147
initContainers: []
1148
## Priority class assigned to the Pods
1149
##
1150
priorityClassName: ""
1151
## AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.
1152
##
1153
additionalPeers: []
1154
## PortName to use for Alert Manager.
1155
##
1156
portName: "http-web"
1157
## ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918
1158
##
1159
clusterAdvertiseAddress: false
1160
## clusterGossipInterval determines interval between gossip attempts.
1161
## Needs to be specified as GoDuration, a time duration that can be parsed by Go's time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)
1162
clusterGossipInterval: ""
1163
## clusterPeerName defines the name this instance advertises to other cluster peers, defaulting to the pod name.
1164
## Literal values and references to environment variables available in the container (e.g. "$(POD_NAME).$(NAMESPACE)") are both accepted.
1165
## Requires Alertmanager >= v0.30.0.
1166
clusterPeerName: ""
1167
## clusterPeerTimeout determines timeout for cluster peering.
1168
## Needs to be specified as GoDuration, a time duration that can be parsed by Go's time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)
1169
clusterPeerTimeout: ""
1170
## clusterPushpullInterval determines interval between pushpull attempts.
1171
## Needs to be specified as GoDuration, a time duration that can be parsed by Go's time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s)
1172
clusterPushpullInterval: ""
1173
## clusterLabel defines the identifier that uniquely identifies the Alertmanager cluster.
1174
clusterLabel: ""
1175
## ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica.
1176
## Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.
1177
forceEnableClusterMode: false
1178
## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to
1179
## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).
1180
minReadySeconds: 0
1181
## Pod management policy. Kubernetes default is OrderedReady but prometheus-operator default is Parallel.
1182
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
1183
podManagementPolicy: ""
1184
## Update strategy for the StatefulSet.
1185
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
1186
updateStrategy: {}
1187
# type: RollingUpdate
1188
# rollingUpdate:
1189
# maxUnavailable: 1
1190
1191
## Duration in seconds the pod needs to terminate gracefully.
1192
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
1193
terminationGracePeriodSeconds: ~
1194
## EnableServiceLinks indicates whether information about services should be injected into the
1195
## pod's environment variables. Uses the operator/Kubernetes default when left unset (~).
1196
enableServiceLinks: ~
1197
## Set the scheduler name to use for the Alertmanager pods.
1198
schedulerName: ""
1199
## Pods' hostAliases configuration
1200
## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
1201
hostAliases: []
1202
# - ip: 10.10.0.100
1203
# hostnames:
1204
# - a1.app.local
1205
1206
## Limits defines the Alertmanager limits command line flags. Requires Alertmanager >= v0.28.0.
1207
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.AlertmanagerLimitsSpec
1208
limits: {}
1209
# maxSilences: 1000
1210
# maxPerSilenceBytes: 1MB
1211
1212
## ClusterTLS defines the mutual TLS configuration for the Alertmanager cluster's gossip protocol.
1213
## Requires Alertmanager >= v0.24.0.
1214
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ClusterTLSConfig
1215
clusterTLS: {}
1216
## Additional configuration which is not covered by the properties above. (passed through tpl)
1217
additionalConfig: {}
1218
## Additional configuration which is not covered by the properties above.
1219
## Useful, if you need advanced templating inside alertmanagerSpec.
1220
## Otherwise, use alertmanager.alertmanagerSpec.additionalConfig (passed through tpl)
1221
additionalConfigString: ""
1222
## ExtraSecret can be used to store various data in an extra secret
1223
## (use it for example to store hashed basic auth credentials)
1224
extraSecret:
1225
## if not set, name will be auto generated
1226
# name: ""
1227
annotations: {}
1228
data: {}
1229
# auth: |
1230
# foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0
1231
# someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.
1232
## Using default values from https://github.com/grafana-community/helm-charts/blob/main/charts/grafana/values.yaml
1233
##
1234
grafana:
1235
enabled: true
1236
namespaceOverride: ""
1237
## ForceDeployDatasources Create datasource configmap even if grafana deployment has been disabled
1238
##
1239
forceDeployDatasources: false
1240
## ForceDeployDashboard Create dashboard configmap even if grafana deployment has been disabled
1241
##
1242
forceDeployDashboards: false
1243
## Deploy default dashboards
1244
##
1245
defaultDashboardsEnabled: true
1246
## Deploy GrafanaDashboard CRDs that reference dashboards from ConfigMaps when grafana-operator is used
1247
## These settings control how dashboards are integrated with the Grafana Operator
1248
## Note: With operator.datasourcesEnabled disabled, end users still need to create their own
1249
## kind: GrafanaDatasource for Prometheus
1250
## eg:
1251
## apiVersion: grafana.integreatly.org/v1beta1
1252
## kind: GrafanaDatasource
1253
## metadata:
1254
## name: prometheus
1255
## annotations: {}
1256
## spec:
1257
## allowCrossNamespaceImport: true
1258
## instanceSelector:
1259
## matchLabels:
1260
## app: grafana
1261
## datasource:
1262
## name: prometheus
1263
## type: prometheus
1264
## access: proxy
1265
## url: http://prometheus-operated.prometheus-stack.svc.cluster.local:9090
1266
## isDefault: true
1267
## jsonData:
1268
## "tlsSkipVerify": true
1269
## "timeInterval": "5s"
1270
##
1271
operator:
1272
## Enable references to ConfigMaps containing dashboards in GrafanaDashboard CRs
1273
## Set to true to allow dashboards to be loaded from ConfigMap references
1274
dashboardsConfigMapRefEnabled: false
1275
## Provision GrafanaDatasource CRs instead of a file-based datasource ConfigMap
1276
## Covers the default Prometheus datasource, the per-replica Prometheus datasources, the
1277
## Alertmanager datasource and every entry of grafana.additionalDataSources
1278
## An entry of grafana.additionalDataSources may carry `valuesFrom` and `plugins`, both are
1279
## moved from the datasource to the CR spec
1280
## grafana.additionalDataSourcesString, grafana.deleteDatasources and grafana.prune have no CR
1281
## equivalent and keep using the ConfigMap
1282
datasourcesEnabled: false
1283
## Annotations for GrafanaDashboard Cr
1284
##
1285
annotations: {}
1286
## Labels that should be matched kind: Grafana instance
1287
## Example: { app: grafana, category: dashboard }
1288
##
1289
matchLabels: {}
1290
## How frequently the operator should resync resources (in duration format)
1291
## Controls how often dashboards are reconciled by the operator
1292
##
1293
resyncPeriod: 10m
1294
## Which folder contains all dashboards in Grafana
1295
## This folder will be created on the Root level
1296
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
1297
##
1298
folder: General
1299
## Which UID of the target folder contains all dashboards in Grafana
1300
## This allows you to use subfolder hierarchy
1301
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
1302
##
1303
folderUID: null
1304
## Which GrafanaFolder reference contains all dashboards in Grafana
1305
## This allows you to use subfolder hierarchy.
1306
## Only one of 'folder', 'folderUID' or 'folderRef' can be set
1307
##
1308
folderRef: null
1309
## Timezone for the default dashboards
1310
## Other options are: browser or a specific timezone, i.e. Europe/Luxembourg
1311
##
1312
defaultDashboardsTimezone: utc
1313
## Editable flag for the default dashboards
1314
##
1315
defaultDashboardsEditable: true
1316
## Default interval for Grafana dashboards
1317
##
1318
defaultDashboardsInterval: 1m
1319
# Administrator credentials when not using an existing secret (see below)
1320
adminUser: admin
1321
# adminPassword: strongpassword
1322
1323
# Use an existing secret for the admin user.
1324
admin:
1325
## Name of the secret. Can be templated.
1326
existingSecret: ""
1327
userKey: admin-user
1328
passwordKey: admin-password
1329
rbac:
1330
## If true, Grafana PSPs will be created
1331
##
1332
pspEnabled: false
1333
ingress:
1334
## If true, Grafana Ingress will be created
1335
##
1336
enabled: false
1337
## IngressClassName for Grafana Ingress.
1338
## Should be provided if Ingress is enable.
1339
##
1340
# ingressClassName: nginx
1341
1342
## Annotations for Grafana Ingress
1343
##
1344
annotations: {}
1345
# kubernetes.io/ingress.class: nginx
1346
# kubernetes.io/tls-acme: "true"
1347
1348
## Labels to be added to the Ingress
1349
##
1350
labels: {}
1351
## Hostnames.
1352
## Must be provided if Ingress is enable.
1353
##
1354
# hosts:
1355
# - grafana.domain.com
1356
hosts: []
1357
## Path for grafana ingress
1358
path: /
1359
## TLS configuration for grafana Ingress
1360
## Secret must be manually created in the namespace
1361
##
1362
tls: []
1363
# - secretName: grafana-general-tls
1364
# hosts:
1365
# - grafana.example.com
1366
# # To make Grafana persistent (Using Statefulset)
1367
# #
1368
# persistence:
1369
# enabled: true
1370
# type: sts
1371
# storageClassName: "storageClassName"
1372
# accessModes:
1373
# - ReadWriteOnce
1374
# size: 20Gi
1375
# finalizers:
1376
# - kubernetes.io/pvc-protection
1377
serviceAccount:
1378
create: true
1379
autoMount: true
1380
sidecar:
1381
dashboards:
1382
enabled: true
1383
label: grafana_dashboard
1384
labelValue: "1"
1385
# Allow discovery in all namespaces for dashboards
1386
searchNamespace: ALL
1387
# Support for new table panels, when enabled grafana auto migrates the old table panels to newer table panels
1388
enableNewTablePanelSyntax: false
1389
## Annotations for Grafana dashboard configmaps
1390
##
1391
annotations: {}
1392
## Annotation the sidecar reads to decide in which Grafana folder a dashboard
1393
## is stored. Requires `provider.foldersFromFilesStructure` to be enabled.
1394
## ref: https://github.com/grafana/helm-charts/tree/main/charts/grafana#sidecar-for-dashboards
1395
##
1396
# folderAnnotation: grafana_folder
1397
multicluster:
1398
global:
1399
enabled: false
1400
etcd:
1401
enabled: false
1402
provider:
1403
allowUiUpdates: false
1404
## Let Grafana replicate the dashboard folder structure created by the sidecar,
1405
## so dashboards are grouped into folders instead of the default one.
1406
## Required when using `folderAnnotation` above.
1407
##
1408
# foldersFromFilesStructure: true
1409
datasources:
1410
enabled: true
1411
defaultDatasourceEnabled: true
1412
isDefaultDatasource: true
1413
name: Prometheus
1414
uid: prometheus
1415
## Extra jsonData properties to add to the datasource
1416
# extraJsonData:
1417
# prometheusType: Prometheus
1418
1419
## URL of prometheus datasource
1420
##
1421
# url: http://prometheus-stack-prometheus:9090/
1422
1423
## Prometheus request timeout in seconds
1424
# timeout: 30
1425
1426
## Query parameters to add, as a URL-encoded string,
1427
## to query Prometheus
1428
# customQueryParameters: ""
1429
1430
# If not defined, will use prometheus.prometheusSpec.scrapeInterval or its default
1431
# defaultDatasourceScrapeInterval: 15s
1432
1433
## Annotations for Grafana datasource configmaps
1434
##
1435
annotations: {}
1436
## Set method for HTTP to send query to datasource
1437
httpMethod: POST
1438
## Create datasource for each Pod of Prometheus StatefulSet;
1439
## this uses by default the headless service `prometheus-operated` which is
1440
## created by Prometheus Operator. In case you deployed your own Service for your
1441
## Prometheus instance, you can specify it with the field `prometheusServiceName`
1442
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/0fee93e12dc7c2ea1218f19ae25ec6b893460590/pkg/prometheus/statefulset.go#L255-L286
1443
createPrometheusReplicasDatasources: false
1444
prometheusServiceName: prometheus-operated
1445
label: grafana_datasource
1446
labelValue: "1"
1447
## Field with internal link pointing to existing data source in Grafana.
1448
## Can be provisioned via additionalDataSources
1449
exemplarTraceIdDestinations: {}
1450
# datasourceUid: Jaeger
1451
# traceIdLabelName: trace_id
1452
# urlDisplayLabel: View traces
1453
alertmanager:
1454
enabled: true
1455
name: Alertmanager
1456
uid: alertmanager
1457
handleGrafanaManagedAlerts: false
1458
implementation: prometheus
1459
extraConfigmapMounts: []
1460
# - name: certs-configmap
1461
# mountPath: /etc/grafana/ssl/
1462
# configMap: certs-configmap
1463
# readOnly: true
1464
1465
deleteDatasources: []
1466
# - name: example-datasource
1467
# orgId: 1
1468
1469
## Configure additional grafana datasources (passed through tpl)
1470
## ref: https://grafana.com/docs/grafana/latest/administration/provisioning/#datasources
1471
additionalDataSources: []
1472
# - name: prometheus-sample
1473
# access: proxy
1474
# basicAuth: true
1475
# secureJsonData:
1476
# basicAuthPassword: pass
1477
# basicAuthUser: daco
1478
# editable: false
1479
# jsonData:
1480
# tlsSkipVerify: true
1481
# orgId: 1
1482
# type: prometheus
1483
# url: https://{{ printf "%s-prometheus.svc" .Release.Name }}:9090
1484
# version: 1
1485
1486
## Configure additional grafana datasources as a templated string (passed through tpl)
1487
## Useful when you need Helm flow control or templating inside the datasource definition
1488
additionalDataSourcesString: ""
1489
# Flag to mark provisioned data sources for deletion if they are no longer configured.
1490
# It takes no effect if data sources are already listed in the deleteDatasources section.
1491
# ref: https://grafana.com/docs/grafana/latest/administration/provisioning/#example-data-source-configuration-file
1492
prune: false
1493
## Passed to grafana subchart and used by servicemonitor below
1494
##
1495
service:
1496
portName: http-web
1497
ipFamilies: []
1498
ipFamilyPolicy: ""
1499
serviceMonitor:
1500
# If true, a ServiceMonitor CRD is created for a prometheus operator
1501
# https://github.com/prometheus-operator/prometheus-operator
1502
#
1503
enabled: true
1504
# Path to use for scraping metrics. Might be different if server.root_url is set
1505
# in grafana.ini
1506
# path: /metrics
1507
1508
# namespace: monitoring (defaults to use the namespace this chart is deployed to)
1509
1510
# labels for the ServiceMonitor
1511
# labels: {}
1512
1513
# Extra scrape settings.
1514
# interval: ""
1515
# scheme: http
1516
# tlsConfig: {}
1517
# scrapeTimeout: 30s
1518
1519
## RelabelConfigs to apply to samples before scraping
1520
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1521
##
1522
# relabelings: []
1523
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1524
# separator: ;
1525
# regex: ^(.*)$
1526
# targetLabel: nodename
1527
# replacement: $1
1528
# action: replace
1529
## Flag to disable all the kubernetes component scrapers
1530
##
1531
kubernetesServiceMonitors:
1532
enabled: true
1533
## Component scraping the kube api server
1534
##
1535
kubeApiServer:
1536
enabled: true
1537
## TLS configuration of the ServiceMonitor endpoint. Rendered as-is, so any field of the
1538
## Prometheus Operator SafeTLSConfig type can be set here.
1539
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
1540
##
1541
tlsConfig:
1542
serverName: kubernetes
1543
insecureSkipVerify: false
1544
ca:
1545
configMap:
1546
name: kube-root-ca.crt
1547
key: ca.crt
1548
serviceMonitor:
1549
enabled: true
1550
## Scrape interval. If not set, the Prometheus default scrape interval is used.
1551
##
1552
interval: ""
1553
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
1554
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
1555
## authentication.
1556
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
1557
##
1558
authorization:
1559
type: Bearer
1560
credentials:
1561
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
1562
key: token
1563
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
1564
## If not set, the default scrape class (if any) is used.
1565
##
1566
scrapeClass: ""
1567
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
1568
##
1569
sampleLimit: 0
1570
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
1571
##
1572
targetLimit: 0
1573
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1574
##
1575
labelLimit: 0
1576
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1577
##
1578
labelNameLengthLimit: 0
1579
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1580
##
1581
labelValueLengthLimit: 0
1582
## proxyUrl: URL of a proxy that should be used for scraping.
1583
##
1584
proxyUrl: ""
1585
jobLabel: component
1586
selector:
1587
matchLabels:
1588
component: apiserver
1589
provider: kubernetes
1590
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
1591
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1592
##
1593
metricRelabelings:
1594
# Drop excessively noisy apiserver buckets.
1595
- action: drop
1596
regex: (etcd_request|apiserver_request_slo|apiserver_request_sli|apiserver_request)_duration_seconds_bucket;(0\.15|0\.2|0\.3|0\.35|0\.4|0\.45|0\.6|0\.7|0\.8|0\.9|1\.25|1\.5|1\.75|2|3|3\.5|4|4\.5|6|7|8|9|15|20|40|45|50)(\.0)?
1597
sourceLabels:
1598
- __name__
1599
- le
1600
# - action: keep
1601
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
1602
# sourceLabels: [__name__]
1603
1604
## RelabelConfigs to apply to samples before scraping
1605
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1606
##
1607
relabelings: []
1608
# - sourceLabels:
1609
# - __meta_kubernetes_namespace
1610
# - __meta_kubernetes_service_name
1611
# - __meta_kubernetes_endpoint_port_name
1612
# action: keep
1613
# regex: default;kubernetes;https
1614
# - targetLabel: __address__
1615
# replacement: kubernetes.default.svc:443
1616
1617
## Additional labels
1618
##
1619
additionalLabels: {}
1620
# foo: bar
1621
1622
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
1623
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
1624
targetLabels: []
1625
## Override the job label used for the apiserver.
1626
## This allows users who scrape apiserver metrics under a different job name (e.g. k3s-server via PushProx)
1627
## to align the recording rules and alerts with their actual job label.
1628
jobNameOverride: ""
1629
## Component scraping the kubelet and kubelet-hosted cAdvisor
1630
##
1631
kubelet:
1632
enabled: true
1633
namespace: kube-system
1634
# Overrides the job selector in Grafana dashboards and Prometheus rules
1635
# For k3s clusters, change to k3s-server
1636
jobNameOverride: ""
1637
serviceMonitor:
1638
enabled: true
1639
## Enable scraping /metrics from kubelet's service
1640
kubelet: true
1641
## Attach metadata to discovered targets. Requires Prometheus v2.45 for endpoints created by the operator.
1642
##
1643
attachMetadata:
1644
node: false
1645
## Scrape interval. If not set, the Prometheus default scrape interval is used.
1646
##
1647
interval: ""
1648
## If true, Prometheus use (respect) labels provided by exporter.
1649
##
1650
honorLabels: true
1651
## If true, Prometheus ingests metrics with timestamp provided by exporter. If false, Prometheus ingests metrics with timestamp of scrape.
1652
##
1653
honorTimestamps: true
1654
## If true, defines whether Prometheus tracks staleness of the metrics that have an explicit timestamp present in scraped data. Has no effect if `honorTimestamps` is false.
1655
## We recommend enabling this if you want the best possible accuracy for container_ metrics scraped from cadvisor.
1656
## For more details see: https://github.com/prometheus-community/helm-charts/pull/5063#issuecomment-2545374849
1657
trackTimestampsStaleness: true
1658
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
1659
## If not set, the default scrape class (if any) is used.
1660
##
1661
scrapeClass: ""
1662
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
1663
##
1664
sampleLimit: 0
1665
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
1666
##
1667
targetLimit: 0
1668
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1669
##
1670
labelLimit: 0
1671
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1672
##
1673
labelNameLengthLimit: 0
1674
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1675
##
1676
labelValueLengthLimit: 0
1677
## proxyUrl: URL of a proxy that should be used for scraping.
1678
##
1679
proxyUrl: ""
1680
## Enable scraping the kubelet over https. For requirements to enable this see
1681
## https://github.com/prometheus-operator/prometheus-operator/issues/926
1682
##
1683
https: true
1684
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
1685
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
1686
## authentication.
1687
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
1688
##
1689
authorization:
1690
type: Bearer
1691
credentials:
1692
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
1693
key: token
1694
## TLS configuration of the ServiceMonitor endpoint. Only applies when scraping over https.
1695
## Rendered as-is, so any field of the Prometheus Operator SafeTLSConfig type can be set here.
1696
## insecureSkipVerify is enabled by default because the kubelet serving certificate deployed by
1697
## kubeadm is self-signed.
1698
## ref: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#kubelet-serving-certs
1699
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
1700
##
1701
tlsConfig:
1702
insecureSkipVerify: true
1703
ca:
1704
configMap:
1705
name: kube-root-ca.crt
1706
key: ca.crt
1707
## Enable scraping /metrics/probes from kubelet's service
1708
##
1709
probes: true
1710
## Enable scraping /metrics/resource from kubelet's service
1711
## This is disabled by default because container metrics are already exposed by cAdvisor
1712
##
1713
resource: false
1714
# From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource
1715
resourcePath: "/metrics/resource/v1alpha1"
1716
## Configure the scrape interval for resource metrics. This is configured to the default Kubelet cAdvisor
1717
## minimum housekeeping interval in order to avoid missing samples. Note, this value is ignored
1718
## if kubelet.serviceMonitor.interval is not empty.
1719
resourceInterval: 10s
1720
## Enable scraping /metrics/cadvisor from kubelet's service
1721
##
1722
cAdvisor: true
1723
## Configure the scrape interval for cAdvisor. This is configured to the default Kubelet cAdvisor
1724
## minimum housekeeping interval in order to avoid missing samples. Note, this value is ignored
1725
## if kubelet.serviceMonitor.interval is not empty.
1726
cAdvisorInterval: 10s
1727
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
1728
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1729
##
1730
cAdvisorMetricRelabelings:
1731
# Drop less useful container CPU metrics.
1732
- sourceLabels: [__name__]
1733
action: drop
1734
regex: 'container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)'
1735
# Drop less useful container / always zero filesystem metrics.
1736
- sourceLabels: [__name__]
1737
action: drop
1738
regex: 'container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)'
1739
# Drop less useful container memory metrics. container_memory_swap is kept because the
1740
# k8s.rules.container_memory_swap recording rule and the "Memory Usage (Swap)" columns
1741
# of the Compute Resources dashboards are built on it.
1742
- sourceLabels: [__name__]
1743
action: drop
1744
regex: 'container_memory_mapped_file'
1745
# Drop less useful container process metrics.
1746
- sourceLabels: [__name__]
1747
action: drop
1748
regex: 'container_(file_descriptors|tasks_state|threads_max)'
1749
# Drop container_memory_failures_total{scope="hierarchy"} metrics,
1750
# we only need the container scope.
1751
- sourceLabels: [__name__, scope]
1752
action: drop
1753
regex: 'container_memory_failures_total;hierarchy'
1754
# Drop container_network_... metrics that match various interfaces that
1755
# correspond to CNI and similar interfaces. This avoids capturing network
1756
# metrics for host network containers.
1757
- sourceLabels: [__name__, interface]
1758
action: drop
1759
regex: 'container_network_.*;(cali|cilium|cni|lxc|nodelocaldns|tunl).*'
1760
# Drop container spec metrics that overlap with kube-state-metrics.
1761
- sourceLabels: [__name__]
1762
action: drop
1763
regex: 'container_spec.*'
1764
# Drop cgroup metrics with no pod.
1765
- sourceLabels: [id, pod]
1766
action: drop
1767
regex: '.+;'
1768
# - sourceLabels: [__name__, image]
1769
# separator: ;
1770
# regex: container_([a-z_]+);
1771
# replacement: $1
1772
# action: drop
1773
# - sourceLabels: [__name__]
1774
# separator: ;
1775
# regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)
1776
# replacement: $1
1777
# action: drop
1778
1779
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
1780
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1781
##
1782
probesMetricRelabelings: []
1783
# - sourceLabels: [__name__, image]
1784
# separator: ;
1785
# regex: container_([a-z_]+);
1786
# replacement: $1
1787
# action: drop
1788
# - sourceLabels: [__name__]
1789
# separator: ;
1790
# regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)
1791
# replacement: $1
1792
# action: drop
1793
1794
## RelabelConfigs to apply to samples before scraping
1795
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1796
##
1797
## metrics_path is required to match upstream rules and charts
1798
cAdvisorRelabelings:
1799
- action: replace
1800
sourceLabels: [__metrics_path__]
1801
targetLabel: metrics_path
1802
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1803
# separator: ;
1804
# regex: ^(.*)$
1805
# targetLabel: nodename
1806
# replacement: $1
1807
# action: replace
1808
1809
## RelabelConfigs to apply to samples before scraping
1810
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1811
##
1812
probesRelabelings:
1813
- action: replace
1814
sourceLabels: [__metrics_path__]
1815
targetLabel: metrics_path
1816
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1817
# separator: ;
1818
# regex: ^(.*)$
1819
# targetLabel: nodename
1820
# replacement: $1
1821
# action: replace
1822
1823
## RelabelConfigs to apply to samples before scraping
1824
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1825
##
1826
resourceRelabelings:
1827
- action: replace
1828
sourceLabels: [__metrics_path__]
1829
targetLabel: metrics_path
1830
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1831
# separator: ;
1832
# regex: ^(.*)$
1833
# targetLabel: nodename
1834
# replacement: $1
1835
# action: replace
1836
1837
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
1838
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1839
##
1840
metricRelabelings:
1841
# Reduce bucket cardinality of kubelet storage operations.
1842
- action: drop
1843
sourceLabels: [__name__, le]
1844
regex: (csi_operations|storage_operation_duration)_seconds_bucket;(0.25|2.5|15|25|120|600)(\.0)?
1845
# - sourceLabels: [__name__, image]
1846
# separator: ;
1847
# regex: container_([a-z_]+);
1848
# replacement: $1
1849
# action: drop
1850
# - sourceLabels: [__name__]
1851
# separator: ;
1852
# regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)
1853
# replacement: $1
1854
# action: drop
1855
1856
## RelabelConfigs to apply to samples before scraping
1857
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1858
##
1859
## metrics_path is required to match upstream rules and charts
1860
relabelings:
1861
- action: replace
1862
sourceLabels: [__metrics_path__]
1863
targetLabel: metrics_path
1864
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1865
# separator: ;
1866
# regex: ^(.*)$
1867
# targetLabel: nodename
1868
# replacement: $1
1869
# action: replace
1870
1871
## Additional labels
1872
##
1873
additionalLabels: {}
1874
# foo: bar
1875
1876
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
1877
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
1878
targetLabels: []
1879
## Component scraping the kube controller manager
1880
##
1881
kubeControllerManager:
1882
enabled: true
1883
# Overrides the job selector in Grafana dashboards and Prometheus rules
1884
# For k3s clusters, change to k3s-server
1885
jobNameOverride: ""
1886
## If your kube controller manager is not deployed as a pod, specify IPs it can be found on
1887
##
1888
endpoints: []
1889
# - 10.141.4.22
1890
# - 10.141.4.23
1891
# - 10.141.4.24
1892
1893
## If using kubeControllerManager.endpoints only the port and targetPort are used
1894
##
1895
service:
1896
enabled: true
1897
## If null or unset, the value is determined dynamically based on target Kubernetes version due to change
1898
## of default port in Kubernetes 1.22.
1899
##
1900
port: null
1901
targetPort: null
1902
ipDualStack:
1903
enabled: false
1904
ipFamilies: ["IPv6", "IPv4"]
1905
ipFamilyPolicy: "PreferDualStack"
1906
# selector:
1907
# component: kube-controller-manager
1908
serviceMonitor:
1909
enabled: true
1910
## Scrape interval. If not set, the Prometheus default scrape interval is used.
1911
##
1912
interval: ""
1913
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
1914
## If not set, the default scrape class (if any) is used.
1915
##
1916
scrapeClass: ""
1917
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
1918
##
1919
sampleLimit: 0
1920
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
1921
##
1922
targetLimit: 0
1923
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1924
##
1925
labelLimit: 0
1926
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1927
##
1928
labelNameLengthLimit: 0
1929
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
1930
##
1931
labelValueLengthLimit: 0
1932
## proxyUrl: URL of a proxy that should be used for scraping.
1933
##
1934
proxyUrl: ""
1935
## port: Name of the port the metrics will be scraped from
1936
##
1937
port: http-metrics
1938
jobLabel: jobLabel
1939
selector: {}
1940
# matchLabels:
1941
# component: kube-controller-manager
1942
1943
## Enable scraping kube-controller-manager over https.
1944
## Requires proper certs (not self-signed) and delegated authentication/authorization checks.
1945
## If null or unset, the value is determined dynamically based on target Kubernetes version.
1946
##
1947
https: null
1948
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
1949
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
1950
## authentication.
1951
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
1952
##
1953
authorization:
1954
type: Bearer
1955
credentials:
1956
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
1957
key: token
1958
## TLS configuration of the ServiceMonitor endpoint. Only applies when scraping over https.
1959
## Rendered as-is, so any field of the Prometheus Operator SafeTLSConfig type can be set here.
1960
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
1961
##
1962
tlsConfig:
1963
insecureSkipVerify: true
1964
ca:
1965
configMap:
1966
name: kube-root-ca.crt
1967
key: ca.crt
1968
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
1969
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1970
##
1971
metricRelabelings: []
1972
# - action: keep
1973
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
1974
# sourceLabels: [__name__]
1975
1976
## RelabelConfigs to apply to samples before scraping
1977
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
1978
##
1979
relabelings: []
1980
# - sourceLabels: [__meta_kubernetes_pod_node_name]
1981
# separator: ;
1982
# regex: ^(.*)$
1983
# targetLabel: nodename
1984
# replacement: $1
1985
# action: replace
1986
1987
## Additional labels
1988
##
1989
additionalLabels: {}
1990
# foo: bar
1991
1992
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
1993
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
1994
targetLabels: []
1995
## Component scraping coreDns. Use either this or kubeDns
1996
##
1997
coreDns:
1998
enabled: true
1999
service:
2000
enabled: true
2001
port: 9153
2002
targetPort: 9153
2003
ipDualStack:
2004
enabled: false
2005
ipFamilies: ["IPv6", "IPv4"]
2006
ipFamilyPolicy: "PreferDualStack"
2007
# selector:
2008
# k8s-app: kube-dns
2009
serviceMonitor:
2010
enabled: true
2011
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2012
##
2013
interval: ""
2014
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
2015
## If not set, the default scrape class (if any) is used.
2016
##
2017
scrapeClass: ""
2018
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2019
##
2020
sampleLimit: 0
2021
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2022
##
2023
targetLimit: 0
2024
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2025
##
2026
labelLimit: 0
2027
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2028
##
2029
labelNameLengthLimit: 0
2030
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2031
##
2032
labelValueLengthLimit: 0
2033
## proxyUrl: URL of a proxy that should be used for scraping.
2034
##
2035
proxyUrl: ""
2036
## port: Name of the port the metrics will be scraped from
2037
##
2038
port: http-metrics
2039
jobLabel: jobLabel
2040
selector: {}
2041
# matchLabels:
2042
# k8s-app: kube-dns
2043
2044
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2045
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2046
##
2047
metricRelabelings: []
2048
# - action: keep
2049
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2050
# sourceLabels: [__name__]
2051
2052
## RelabelConfigs to apply to samples before scraping
2053
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2054
##
2055
relabelings: []
2056
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2057
# separator: ;
2058
# regex: ^(.*)$
2059
# targetLabel: nodename
2060
# replacement: $1
2061
# action: replace
2062
2063
## Additional labels
2064
##
2065
additionalLabels: {}
2066
# foo: bar
2067
2068
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
2069
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
2070
targetLabels: []
2071
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
2072
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
2073
## authentication.
2074
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
2075
##
2076
authorization:
2077
type: Bearer
2078
credentials:
2079
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
2080
key: token
2081
## Component scraping kubeDns. Use either this or coreDns
2082
##
2083
kubeDns:
2084
enabled: false
2085
service:
2086
dnsmasq:
2087
port: 10054
2088
targetPort: 10054
2089
skydns:
2090
port: 10055
2091
targetPort: 10055
2092
ipDualStack:
2093
enabled: false
2094
ipFamilies: ["IPv6", "IPv4"]
2095
ipFamilyPolicy: "PreferDualStack"
2096
# selector:
2097
# k8s-app: kube-dns
2098
serviceMonitor:
2099
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2100
##
2101
interval: ""
2102
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
2103
## If not set, the default scrape class (if any) is used.
2104
##
2105
scrapeClass: ""
2106
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2107
##
2108
sampleLimit: 0
2109
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2110
##
2111
targetLimit: 0
2112
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2113
##
2114
labelLimit: 0
2115
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2116
##
2117
labelNameLengthLimit: 0
2118
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2119
##
2120
labelValueLengthLimit: 0
2121
## proxyUrl: URL of a proxy that should be used for scraping.
2122
##
2123
proxyUrl: ""
2124
jobLabel: jobLabel
2125
selector: {}
2126
# matchLabels:
2127
# k8s-app: kube-dns
2128
2129
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2130
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2131
##
2132
metricRelabelings: []
2133
# - action: keep
2134
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2135
# sourceLabels: [__name__]
2136
2137
## RelabelConfigs to apply to samples before scraping
2138
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2139
##
2140
relabelings: []
2141
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2142
# separator: ;
2143
# regex: ^(.*)$
2144
# targetLabel: nodename
2145
# replacement: $1
2146
# action: replace
2147
2148
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2149
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2150
##
2151
dnsmasqMetricRelabelings: []
2152
# - action: keep
2153
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2154
# sourceLabels: [__name__]
2155
2156
## RelabelConfigs to apply to samples before scraping
2157
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2158
##
2159
dnsmasqRelabelings: []
2160
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2161
# separator: ;
2162
# regex: ^(.*)$
2163
# targetLabel: nodename
2164
# replacement: $1
2165
# action: replace
2166
2167
## Additional labels
2168
##
2169
additionalLabels: {}
2170
# foo: bar
2171
2172
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
2173
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
2174
targetLabels: []
2175
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
2176
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
2177
## authentication.
2178
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
2179
##
2180
authorization:
2181
type: Bearer
2182
credentials:
2183
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
2184
key: token
2185
## Component scraping etcd
2186
##
2187
kubeEtcd:
2188
enabled: true
2189
## If your etcd is not deployed as a pod, specify IPs it can be found on
2190
##
2191
endpoints: []
2192
# - 10.141.4.22
2193
# - 10.141.4.23
2194
# - 10.141.4.24
2195
2196
## Etcd service. If using kubeEtcd.endpoints only the port and targetPort are used
2197
##
2198
service:
2199
enabled: true
2200
port: 2381
2201
targetPort: 2381
2202
ipDualStack:
2203
enabled: false
2204
ipFamilies: ["IPv6", "IPv4"]
2205
ipFamilyPolicy: "PreferDualStack"
2206
# selector:
2207
# component: etcd
2208
## Configure secure access to the etcd cluster by referencing a secret holding the client
2209
## certificate. For example, with a secret named etcd-client-cert
2210
##
2211
## serviceMonitor:
2212
## scheme: https
2213
## tlsConfig:
2214
## insecureSkipVerify: false
2215
## serverName: localhost
2216
## ca:
2217
## secret:
2218
## name: etcd-client-cert
2219
## key: etcd-ca
2220
## cert:
2221
## secret:
2222
## name: etcd-client-cert
2223
## key: etcd-client
2224
## keySecret:
2225
## name: etcd-client-cert
2226
## key: etcd-client-key
2227
##
2228
serviceMonitor:
2229
enabled: true
2230
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2231
##
2232
interval: ""
2233
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
2234
## If not set, the default scrape class (if any) is used.
2235
##
2236
scrapeClass: ""
2237
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2238
##
2239
sampleLimit: 0
2240
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2241
##
2242
targetLimit: 0
2243
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2244
##
2245
labelLimit: 0
2246
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2247
##
2248
labelNameLengthLimit: 0
2249
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2250
##
2251
labelValueLengthLimit: 0
2252
## proxyUrl: URL of a proxy that should be used for scraping.
2253
##
2254
proxyUrl: ""
2255
scheme: http
2256
## TLS configuration of the ServiceMonitor endpoint. Only applies when scheme is https.
2257
## Rendered as-is, so any field of the Prometheus Operator SafeTLSConfig type can be set here.
2258
## etcd requires client certificates, see the commented example above.
2259
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
2260
##
2261
tlsConfig:
2262
insecureSkipVerify: false
2263
## port: Name of the port the metrics will be scraped from
2264
##
2265
port: http-metrics
2266
jobLabel: jobLabel
2267
selector: {}
2268
# matchLabels:
2269
# component: etcd
2270
2271
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2272
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2273
##
2274
metricRelabelings: []
2275
# - action: keep
2276
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2277
# sourceLabels: [__name__]
2278
2279
## RelabelConfigs to apply to samples before scraping
2280
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2281
##
2282
relabelings: []
2283
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2284
# separator: ;
2285
# regex: ^(.*)$
2286
# targetLabel: nodename
2287
# replacement: $1
2288
# action: replace
2289
2290
## Additional labels
2291
##
2292
additionalLabels: {}
2293
# foo: bar
2294
2295
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
2296
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
2297
targetLabels: []
2298
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
2299
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
2300
## authentication.
2301
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
2302
##
2303
authorization:
2304
type: Bearer
2305
credentials:
2306
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
2307
key: token
2308
## Component scraping kube scheduler
2309
##
2310
kubeScheduler:
2311
enabled: true
2312
# Overrides the job selector in Grafana dashboards and Prometheus rules
2313
# For k3s clusters, change to k3s-server
2314
jobNameOverride: ""
2315
## If your kube scheduler is not deployed as a pod, specify IPs it can be found on
2316
##
2317
endpoints: []
2318
# - 10.141.4.22
2319
# - 10.141.4.23
2320
# - 10.141.4.24
2321
2322
## If using kubeScheduler.endpoints only the port and targetPort are used
2323
##
2324
service:
2325
enabled: true
2326
## If null or unset, the value is determined dynamically based on target Kubernetes version due to change
2327
## of default port in Kubernetes 1.23.
2328
##
2329
port: null
2330
targetPort: null
2331
ipDualStack:
2332
enabled: false
2333
ipFamilies: ["IPv6", "IPv4"]
2334
ipFamilyPolicy: "PreferDualStack"
2335
# selector:
2336
# component: kube-scheduler
2337
serviceMonitor:
2338
enabled: true
2339
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2340
##
2341
interval: ""
2342
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
2343
## If not set, the default scrape class (if any) is used.
2344
##
2345
scrapeClass: ""
2346
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2347
##
2348
sampleLimit: 0
2349
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2350
##
2351
targetLimit: 0
2352
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2353
##
2354
labelLimit: 0
2355
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2356
##
2357
labelNameLengthLimit: 0
2358
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2359
##
2360
labelValueLengthLimit: 0
2361
## proxyUrl: URL of a proxy that should be used for scraping.
2362
##
2363
proxyUrl: ""
2364
## Enable scraping kube-scheduler over https.
2365
## Requires proper certs (not self-signed) and delegated authentication/authorization checks.
2366
## If null or unset, the value is determined dynamically based on target Kubernetes version.
2367
##
2368
https: null
2369
## port: Name of the port the metrics will be scraped from
2370
##
2371
port: http-metrics
2372
jobLabel: jobLabel
2373
selector: {}
2374
# matchLabels:
2375
# component: kube-scheduler
2376
2377
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
2378
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
2379
## authentication.
2380
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
2381
##
2382
authorization:
2383
type: Bearer
2384
credentials:
2385
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
2386
key: token
2387
## TLS configuration of the ServiceMonitor endpoint. Only applies when scraping over https.
2388
## Rendered as-is, so any field of the Prometheus Operator SafeTLSConfig type can be set here.
2389
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
2390
##
2391
tlsConfig:
2392
insecureSkipVerify: true
2393
ca:
2394
configMap:
2395
name: kube-root-ca.crt
2396
key: ca.crt
2397
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2398
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2399
##
2400
metricRelabelings: []
2401
# - action: keep
2402
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2403
# sourceLabels: [__name__]
2404
2405
## RelabelConfigs to apply to samples before scraping
2406
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2407
##
2408
relabelings: []
2409
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2410
# separator: ;
2411
# regex: ^(.*)$
2412
# targetLabel: nodename
2413
# replacement: $1
2414
# action: replace
2415
2416
## Additional labels
2417
##
2418
additionalLabels: {}
2419
# foo: bar
2420
2421
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
2422
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
2423
targetLabels: []
2424
resource:
2425
## Enable scraping /metrics/resource from kube-scheduler
2426
## https://kubernetes.io/docs/concepts/cluster-administration/system-metrics/#kube-scheduler-metrics
2427
enabled: false
2428
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2429
##
2430
interval: ""
2431
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2432
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2433
##
2434
metricRelabelings: []
2435
# - action: keep
2436
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2437
# sourceLabels: [__name__]
2438
2439
## RelabelConfigs to apply to samples before scraping
2440
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2441
##
2442
relabelings: []
2443
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2444
# separator: ;
2445
# regex: ^(.*)$
2446
# targetLabel: nodename
2447
# replacement: $1
2448
# action: replace
2449
## Component scraping kube proxy
2450
##
2451
kubeProxy:
2452
enabled: true
2453
# Overrides the job selector in Grafana dashboards and Prometheus rules
2454
# For k3s clusters, change to k3s-server
2455
jobNameOverride: ""
2456
## If your kube proxy is not deployed as a pod, specify IPs it can be found on
2457
##
2458
endpoints: []
2459
# - 10.141.4.22
2460
# - 10.141.4.23
2461
# - 10.141.4.24
2462
2463
service:
2464
enabled: true
2465
port: 10249
2466
targetPort: 10249
2467
ipDualStack:
2468
enabled: false
2469
ipFamilies: ["IPv6", "IPv4"]
2470
ipFamilyPolicy: "PreferDualStack"
2471
# selector:
2472
# k8s-app: kube-proxy
2473
serviceMonitor:
2474
enabled: true
2475
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2476
##
2477
interval: ""
2478
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
2479
## If not set, the default scrape class (if any) is used.
2480
##
2481
scrapeClass: ""
2482
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2483
##
2484
sampleLimit: 0
2485
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2486
##
2487
targetLimit: 0
2488
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2489
##
2490
labelLimit: 0
2491
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2492
##
2493
labelNameLengthLimit: 0
2494
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2495
##
2496
labelValueLengthLimit: 0
2497
## proxyUrl: URL of a proxy that should be used for scraping.
2498
##
2499
proxyUrl: ""
2500
## port: Name of the port the metrics will be scraped from
2501
##
2502
port: http-metrics
2503
jobLabel: jobLabel
2504
selector: {}
2505
# matchLabels:
2506
# k8s-app: kube-proxy
2507
2508
## Enable scraping kube-proxy over https.
2509
## Requires proper certs (not self-signed) and delegated authentication/authorization checks
2510
##
2511
https: false
2512
## TLS configuration of the ServiceMonitor endpoint. Only applies when scraping over https.
2513
## Rendered as-is, so any field of the Prometheus Operator SafeTLSConfig type can be set here.
2514
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeTLSConfig
2515
##
2516
tlsConfig:
2517
ca:
2518
configMap:
2519
name: kube-root-ca.crt
2520
key: ca.crt
2521
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2522
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2523
##
2524
metricRelabelings: []
2525
# - action: keep
2526
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2527
# sourceLabels: [__name__]
2528
2529
## RelabelConfigs to apply to samples before scraping
2530
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2531
##
2532
relabelings: []
2533
# - action: keep
2534
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
2535
# sourceLabels: [__name__]
2536
2537
## Additional labels
2538
##
2539
additionalLabels: {}
2540
# foo: bar
2541
2542
## defines the labels which are transferred from the associated Kubernetes Service object onto the ingested metrics.
2543
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
2544
targetLabels: []
2545
## Bearer credentials used to scrape this component. Rendered as-is, so any field of the
2546
## Prometheus Operator SafeAuthorization type can be set here. Set to null to scrape without
2547
## authentication.
2548
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.SafeAuthorization
2549
##
2550
authorization:
2551
type: Bearer
2552
credentials:
2553
name: '{{ include "kube-prometheus-stack.prometheus.tokenSecretName" . }}'
2554
key: token
2555
## Component scraping kube state metrics
2556
##
2557
kubeStateMetrics:
2558
enabled: true
2559
## Configuration for kube-state-metrics subchart
2560
##
2561
kube-state-metrics:
2562
## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box
2563
releaseLabel: true
2564
## Enable scraping via kubernetes-service-endpoints
2565
## Disabled by default as we service monitor is enabled below
2566
##
2567
prometheusScrape: false
2568
prometheus:
2569
monitor:
2570
## Enable scraping via service monitor
2571
## Disable to prevent duplication if you enable prometheusScrape above
2572
enabled: true
2573
## kube-state-metrics endpoint
2574
http:
2575
## Keep labels from scraped data, overriding server-side labels
2576
honorLabels: true
2577
## selfMonitor endpoint
2578
metrics:
2579
## Keep labels from scraped data, overriding server-side labels
2580
honorLabels: true
2581
## Deploy node exporter as a daemonset to all nodes
2582
##
2583
nodeExporter:
2584
enabled: true
2585
operatingSystems:
2586
linux:
2587
enabled: true
2588
aix:
2589
enabled: true
2590
darwin:
2591
enabled: true
2592
## ForceDeployDashboard Create dashboard configmap even if nodeExporter deployment has been disabled
2593
##
2594
forceDeployDashboards: false
2595
## Configuration for prometheus-node-exporter subchart
2596
##
2597
prometheus-node-exporter:
2598
## Enable scraping via kubernetes-service-endpoints
2599
## Disabled by default as service monitor is enabled below
2600
##
2601
prometheusScrape: false
2602
namespaceOverride: ""
2603
podLabels:
2604
## Add the 'node-exporter' label to be used by serviceMonitor and podMonitor to match standard common usage in rules and grafana dashboards
2605
##
2606
jobLabel: node-exporter
2607
releaseLabel: true
2608
extraArgs:
2609
- --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/containerd/.+|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
2610
- --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs|erofs)$
2611
service:
2612
portName: http-metrics
2613
ipDualStack:
2614
enabled: false
2615
ipFamilies: ["IPv6", "IPv4"]
2616
ipFamilyPolicy: "PreferDualStack"
2617
labels:
2618
jobLabel: node-exporter
2619
image:
2620
distroless: true
2621
prometheus:
2622
monitor:
2623
## Enable scraping via service monitor
2624
## Disable to prevent duplication if you have enabled prometheusScrape above
2625
#
2626
enabled: true
2627
jobLabel: jobLabel
2628
## Scrape interval. If not set, the Prometheus default scrape interval is used.
2629
##
2630
interval: ""
2631
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
2632
##
2633
sampleLimit: 0
2634
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
2635
##
2636
targetLimit: 0
2637
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2638
##
2639
labelLimit: 0
2640
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2641
##
2642
labelNameLengthLimit: 0
2643
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
2644
##
2645
labelValueLengthLimit: 0
2646
## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used.
2647
##
2648
scrapeTimeout: ""
2649
## proxyUrl: URL of a proxy that should be used for scraping.
2650
##
2651
proxyUrl: ""
2652
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
2653
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2654
##
2655
metricRelabelings: []
2656
# - sourceLabels: [__name__]
2657
# separator: ;
2658
# regex: ^node_mountstats_nfs_(event|operations|transport)_.+
2659
# replacement: $1
2660
# action: drop
2661
2662
## RelabelConfigs to apply to samples before scraping
2663
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
2664
##
2665
relabelings: []
2666
# - sourceLabels: [__meta_kubernetes_pod_node_name]
2667
# separator: ;
2668
# regex: ^(.*)$
2669
# targetLabel: nodename
2670
# replacement: $1
2671
# action: replace
2672
## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
2673
##
2674
# attachMetadata:
2675
# node: false
2676
2677
podMonitor:
2678
enabled: false
2679
jobLabel: jobLabel
2680
rbac:
2681
## If true, create PSPs for node-exporter
2682
##
2683
pspEnabled: false
2684
## Manages Prometheus and Alertmanager components
2685
##
2686
prometheusOperator:
2687
enabled: true
2688
## Use '{{ template "kube-prometheus-stack.fullname" . }}-operator' by default
2689
fullnameOverride: ""
2690
## Number of old replicasets to retain ##
2691
## The default value is 10, 0 will garbage-collect old replicasets ##
2692
revisionHistoryLimit: 10
2693
## Strategy of the deployment
2694
##
2695
strategy: {}
2696
## Prometheus-Operator v0.39.0 and later support TLS natively.
2697
##
2698
tls:
2699
enabled: true
2700
# Value must match version names from https://pkg.go.dev/crypto/tls#pkg-constants
2701
tlsMinVersion: VersionTLS13
2702
# The default webhook port is 10250 in order to work out-of-the-box in GKE private clusters and avoid adding firewall rules.
2703
internalPort: 10250
2704
## Liveness probe for the prometheusOperator deployment
2705
##
2706
livenessProbe:
2707
enabled: true
2708
failureThreshold: 3
2709
initialDelaySeconds: 0
2710
periodSeconds: 10
2711
successThreshold: 1
2712
timeoutSeconds: 1
2713
## Readiness probe for the prometheusOperator deployment
2714
##
2715
readinessProbe:
2716
enabled: true
2717
failureThreshold: 3
2718
initialDelaySeconds: 0
2719
periodSeconds: 10
2720
successThreshold: 1
2721
timeoutSeconds: 1
2722
## Admission webhook support for PrometheusRules resources added in Prometheus Operator 0.30 can be enabled to prevent incorrectly formatted
2723
## rules from making their way into prometheus and potentially preventing the container from starting
2724
admissionWebhooks:
2725
## Valid values: Fail, Ignore, IgnoreOnInstallOnly
2726
## IgnoreOnInstallOnly - If Release.IsInstall returns "true", set "Ignore" otherwise "Fail"
2727
failurePolicy: ""
2728
## The default timeoutSeconds is 10 and the maximum value is 30.
2729
timeoutSeconds: 10
2730
enabled: true
2731
## A PEM encoded CA bundle which will be used to validate the webhook's server certificate.
2732
## If unspecified, system trust roots on the apiserver are used.
2733
caBundle: ""
2734
## If enabled, generate a self-signed certificate, then patch the webhook configurations with the generated data.
2735
## On chart upgrades (or if the secret exists) the cert will not be re-generated. You can use this to provide your own
2736
## certs ahead of time if you wish.
2737
##
2738
annotations: {}
2739
# argocd.argoproj.io/hook: PreSync
2740
# argocd.argoproj.io/hook-delete-policy: HookSucceeded
2741
2742
namespaceSelector: {}
2743
objectSelector: {}
2744
# Match conditions for admission webhooks.
2745
# Must be a list, for example:
2746
# - name: exclude-leases
2747
# expression: '!(request.resource.group == "coordination.k8s.io" && request.resource.resource == "leases")'
2748
matchConditions: []
2749
mutatingWebhookConfiguration:
2750
annotations: {}
2751
# argocd.argoproj.io/hook: PreSync
2752
validatingWebhookConfiguration:
2753
annotations: {}
2754
# argocd.argoproj.io/hook: PreSync
2755
deployment:
2756
enabled: false
2757
## Number of replicas
2758
##
2759
replicas: 1
2760
## Strategy of the deployment
2761
##
2762
strategy: {}
2763
# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
2764
podDisruptionBudget:
2765
enabled: false
2766
minAvailable: 1
2767
# maxUnavailable: ""
2768
unhealthyPodEvictionPolicy: AlwaysAllow
2769
## Number of old replicasets to retain ##
2770
## The default value is 10, 0 will garbage-collect old replicasets ##
2771
revisionHistoryLimit: 10
2772
## Prometheus-Operator v0.39.0 and later support TLS natively.
2773
##
2774
tls:
2775
enabled: true
2776
# Value must match version names from https://pkg.go.dev/crypto/tls#pkg-constants
2777
tlsMinVersion: VersionTLS13
2778
# The default webhook port is 10250 in order to work out-of-the-box in GKE private clusters and avoid adding firewall rules.
2779
internalPort: 10250
2780
## Service account for Prometheus Operator Webhook to use.
2781
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2782
##
2783
serviceAccount:
2784
annotations: {}
2785
automountServiceAccountToken: false
2786
create: true
2787
name: ""
2788
## Configuration for Prometheus operator Webhook service
2789
##
2790
service:
2791
annotations: {}
2792
labels: {}
2793
clusterIP: ""
2794
ipDualStack:
2795
enabled: false
2796
ipFamilies: ["IPv6", "IPv4"]
2797
ipFamilyPolicy: "PreferDualStack"
2798
## Port to expose on each node
2799
## Only used if service.type is 'NodePort'
2800
##
2801
nodePort: 31080
2802
nodePortTls: 31443
2803
## Additional ports to open for Prometheus operator Webhook service
2804
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services
2805
##
2806
additionalPorts: []
2807
## Loadbalancer IP
2808
## Only use if service.type is "LoadBalancer"
2809
##
2810
loadBalancerIP: ""
2811
loadBalancerSourceRanges: []
2812
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
2813
##
2814
externalTrafficPolicy: Cluster
2815
## Service type
2816
## NodePort, ClusterIP, LoadBalancer
2817
##
2818
type: ClusterIP
2819
## List of IP addresses at which the Prometheus server service is available
2820
## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
2821
##
2822
externalIPs: []
2823
# ## Labels to add to the operator webhook deployment
2824
# ##
2825
labels: {}
2826
## Annotations to add to the operator webhook deployment
2827
##
2828
annotations: {}
2829
## Labels to add to the operator webhook pod
2830
##
2831
podLabels: {}
2832
## Annotations to add to the operator webhook pod
2833
##
2834
podAnnotations: {}
2835
## Assign a PriorityClassName to pods if set
2836
# priorityClassName: ""
2837
2838
## Define Log Format
2839
# Use logfmt (default) or json logging
2840
# logFormat: logfmt
2841
2842
## Decrease log verbosity to errors only
2843
# logLevel: error
2844
2845
## Prometheus-operator webhook image
2846
##
2847
image:
2848
registry: cgr.dev
2849
repository: chainguard-private/prometheus-admission-webhook
2850
# if not set appVersion field from Chart.yaml is used
2851
tag: 0.94.2-r1
2852
sha: sha256:7ee27ecf781e0a4c515eabd1e4e04333f0d01850c17114c9454d2db9f5422092
2853
pullPolicy: IfNotPresent
2854
## Define Log Format
2855
# Use logfmt (default) or json logging
2856
# logFormat: logfmt
2857
2858
## Decrease log verbosity to errors only
2859
# logLevel: error
2860
2861
## PromQL parser options to enable for the admission webhook when validating PrometheusRule resources.
2862
## The options are passed to the prometheus-operator admission-webhook binary as a comma-separated --promql-options value.
2863
## Requires prometheus-operator admission-webhook v0.91.0 or newer.
2864
## Valid values: experimental-functions, duration-expression-parsing, extended-range-selectors, binop-fill-modifiers.
2865
##
2866
promqlOptions: []
2867
## Liveness probe
2868
##
2869
livenessProbe:
2870
enabled: true
2871
failureThreshold: 3
2872
initialDelaySeconds: 30
2873
periodSeconds: 10
2874
successThreshold: 1
2875
timeoutSeconds: 1
2876
## Readiness probe
2877
##
2878
readinessProbe:
2879
enabled: true
2880
failureThreshold: 3
2881
initialDelaySeconds: 5
2882
periodSeconds: 10
2883
successThreshold: 1
2884
timeoutSeconds: 1
2885
## Resource limits & requests
2886
##
2887
resources: {}
2888
# limits:
2889
# cpu: 200m
2890
# memory: 200Mi
2891
# requests:
2892
# cpu: 100m
2893
# memory: 100Mi
2894
2895
# Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico),
2896
# because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working
2897
##
2898
hostNetwork: false
2899
## Define which Nodes the Pods are scheduled on.
2900
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
2901
##
2902
nodeSelector:
2903
kubernetes.io/os: linux
2904
## Tolerations for use with node taints
2905
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
2906
##
2907
tolerations: []
2908
# - key: "key"
2909
# operator: "Equal"
2910
# value: "value"
2911
# effect: "NoSchedule"
2912
2913
## Assign custom affinity rules to the prometheus operator
2914
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
2915
##
2916
affinity: {}
2917
# nodeAffinity:
2918
# requiredDuringSchedulingIgnoredDuringExecution:
2919
# nodeSelectorTerms:
2920
# - matchExpressions:
2921
# - key: kubernetes.io/e2e-az-name
2922
# operator: In
2923
# values:
2924
# - e2e-az1
2925
# - e2e-az2
2926
dnsConfig: {}
2927
# nameservers:
2928
# - 1.2.3.4
2929
# searches:
2930
# - ns1.svc.cluster-domain.example
2931
# - my.dns.search.suffix
2932
# options:
2933
# - name: ndots
2934
# value: "2"
2935
# - name: edns0
2936
securityContext:
2937
fsGroup: 65534
2938
runAsGroup: 65534
2939
runAsNonRoot: true
2940
runAsUser: 65534
2941
seccompProfile:
2942
type: RuntimeDefault
2943
## Container-specific security context configuration
2944
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
2945
##
2946
containerSecurityContext:
2947
allowPrivilegeEscalation: false
2948
readOnlyRootFilesystem: true
2949
capabilities:
2950
drop:
2951
- ALL
2952
## If false then the user will opt out of automounting API credentials.
2953
##
2954
automountServiceAccountToken: true
2955
patch:
2956
enabled: true
2957
image:
2958
registry: cgr.dev
2959
repository: chainguard-private/kube-webhook-certgen
2960
tag: 1.15.12-r2
2961
sha: sha256:beae8b5ad3b8588cf26920237619a2a126124b3fd39400992fa3e1d3f1e78e8a
2962
pullPolicy: IfNotPresent
2963
## Type of the secret created by the certgen job. Requires kube-webhook-certgen 1.11.0 or newer.
2964
## kubernetes.io/tls stores the certificates as ca.crt, tls.crt and tls.key. An existing Opaque secret is
2965
## deleted and recreated as kubernetes.io/tls with the same certificates, keeping the legacy ca, cert and key entries.
2966
## Set to "" to keep the previous Opaque secret with ca, cert and key, e.g. when using an older certgen image.
2967
## Without cert-manager and the certgen job, the chart reads ca, cert and key from the <fullname>-admission secret.
2968
## A secret created by this job as kubernetes.io/tls only contains ca.crt, tls.crt and tls.key, so replace it
2969
## before disabling the job or the admission webhooks while prometheusOperator.tls.enabled is true.
2970
##
2971
secretType: ""
2972
resources: {}
2973
## Provide a priority class name to the webhook patching job
2974
##
2975
priorityClassName: ""
2976
ttlSecondsAfterFinished: 60
2977
annotations: {}
2978
# argocd.argoproj.io/hook: PreSync
2979
# argocd.argoproj.io/hook-delete-policy: HookSucceeded
2980
podAnnotations: {}
2981
nodeSelector:
2982
kubernetes.io/os: linux
2983
affinity: {}
2984
tolerations: []
2985
## SecurityContext holds pod-level security attributes and common container settings.
2986
## This defaults to non root user with uid 2000 and gid 2000. *v1.PodSecurityContext false
2987
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
2988
##
2989
securityContext:
2990
runAsGroup: 2000
2991
runAsNonRoot: true
2992
runAsUser: 2000
2993
seccompProfile:
2994
type: RuntimeDefault
2995
## Service account for Prometheus Operator Webhook Job Patch to use.
2996
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
2997
##
2998
serviceAccount:
2999
create: true
3000
annotations: {}
3001
automountServiceAccountToken: true
3002
# Security context for create job container
3003
createSecretJob:
3004
securityContext:
3005
allowPrivilegeEscalation: false
3006
readOnlyRootFilesystem: true
3007
capabilities:
3008
drop:
3009
- ALL
3010
# Security context for patch job container
3011
patchWebhookJob:
3012
securityContext:
3013
allowPrivilegeEscalation: false
3014
readOnlyRootFilesystem: true
3015
capabilities:
3016
drop:
3017
- ALL
3018
# Use certmanager to generate webhook certs
3019
certManager:
3020
enabled: false
3021
# self-signed root certificate
3022
rootCert:
3023
duration: "" # default to be 5y
3024
# -- Set the revisionHistoryLimit on the Certificate. See
3025
# https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
3026
# Defaults to nil.
3027
revisionHistoryLimit:
3028
admissionCert:
3029
duration: "" # default to be 1y
3030
# -- Set the revisionHistoryLimit on the Certificate. See
3031
# https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificateSpec
3032
# Defaults to nil.
3033
revisionHistoryLimit:
3034
# issuerRef:
3035
# name: "issuer"
3036
# kind: "ClusterIssuer"
3037
# -- Set the private key algorithm and size for the Certificate. See
3038
# https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.CertificatePrivateKey
3039
# Defaults to RSA 2048
3040
# privateKey:
3041
# algorithm: ECDSA
3042
# size: 384
3043
3044
## Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list).
3045
## This is mutually exclusive with denyNamespaces. Setting this to an empty object will disable the configuration
3046
##
3047
namespaces: {}
3048
# releaseNamespace: true
3049
# additional:
3050
# - kube-system
3051
3052
## Namespaces not to scope the interaction of the Prometheus Operator (deny list).
3053
##
3054
denyNamespaces: []
3055
## Filter namespaces to look for prometheus-operator custom resources
3056
##
3057
alertmanagerInstanceNamespaces: []
3058
alertmanagerConfigNamespaces: []
3059
prometheusInstanceNamespaces: []
3060
thanosRulerInstanceNamespaces: []
3061
## The clusterDomain value will be added to the cluster.peer option of the alertmanager.
3062
## Without this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated:9094 (default value)
3063
## With this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated.namespace.svc.cluster-domain:9094
3064
##
3065
# clusterDomain: "cluster.local"
3066
networkPolicy:
3067
## Enable creation of NetworkPolicy resources.
3068
##
3069
enabled: false
3070
## Flavor of the network policy to use.
3071
# Can be:
3072
# * kubernetes for networking.k8s.io/v1/NetworkPolicy
3073
# * cilium for cilium.io/v2/CiliumNetworkPolicy
3074
flavor: kubernetes
3075
# cilium:
3076
# egress:
3077
3078
## match labels used in selector
3079
# matchLabels: {}
3080
## Service account for Prometheus Operator to use.
3081
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3082
##
3083
serviceAccount:
3084
create: true
3085
name: ""
3086
automountServiceAccountToken: true
3087
annotations: {}
3088
# -- terminationGracePeriodSeconds for container lifecycle hook
3089
terminationGracePeriodSeconds: 30
3090
# -- Specify lifecycle hooks for the controller
3091
lifecycle: {}
3092
## Configuration for Prometheus operator service
3093
##
3094
service:
3095
annotations: {}
3096
labels: {}
3097
clusterIP: ""
3098
ipDualStack:
3099
enabled: false
3100
ipFamilies: ["IPv6", "IPv4"]
3101
ipFamilyPolicy: "PreferDualStack"
3102
## Port to expose on each node
3103
## Only used if service.type is 'NodePort'
3104
##
3105
nodePort: 30080
3106
nodePortTls: 30443
3107
## Additional ports to open for Prometheus operator service
3108
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services
3109
##
3110
additionalPorts: []
3111
## Loadbalancer IP
3112
## Only use if service.type is "LoadBalancer"
3113
##
3114
loadBalancerIP: ""
3115
loadBalancerSourceRanges: []
3116
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
3117
##
3118
externalTrafficPolicy: Cluster
3119
## Service type
3120
## NodePort, ClusterIP, LoadBalancer
3121
##
3122
type: ClusterIP
3123
## List of IP addresses at which the Prometheus server service is available
3124
## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
3125
##
3126
externalIPs: []
3127
# ## Labels to add to the operator deployment
3128
# ##
3129
labels: {}
3130
## Annotations to add to the operator deployment
3131
##
3132
annotations: {}
3133
## Labels to add to the operator pod
3134
##
3135
podLabels: {}
3136
## Annotations to add to the operator pod
3137
##
3138
podAnnotations: {}
3139
## Assign a podDisruptionBudget to the operator
3140
##
3141
podDisruptionBudget:
3142
enabled: false
3143
minAvailable: 1
3144
# maxUnavailable: ""
3145
unhealthyPodEvictionPolicy: AlwaysAllow
3146
## Assign a PriorityClassName to pods if set
3147
# priorityClassName: ""
3148
3149
## Define Log Format
3150
# Use logfmt (default) or json logging
3151
# logFormat: logfmt
3152
3153
## Decrease log verbosity to errors only
3154
# logLevel: error
3155
kubeletService:
3156
## If true, the operator will create and maintain a service for scraping kubelets
3157
## ref: https://prometheus-operator.dev/docs/platform/operator/ (`-kubelet-service`)
3158
##
3159
enabled: true
3160
namespace: kube-system
3161
selector: ""
3162
## Use '{{ template "kube-prometheus-stack.fullname" . }}-kubelet' by default
3163
name: ""
3164
## Create Endpoints objects for kubelet targets.
3165
kubeletEndpointsEnabled: true
3166
## Create EndpointSlice objects for kubelet targets.
3167
kubeletEndpointSliceEnabled: false
3168
## Extra arguments to pass to prometheusOperator
3169
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/platform/operator.md
3170
extraArgs: []
3171
# - --labels="cluster=talos-cluster"
3172
3173
## Create a servicemonitor for the operator
3174
##
3175
serviceMonitor:
3176
## If true, create a serviceMonitor for prometheus operator
3177
##
3178
selfMonitor: true
3179
## Labels for ServiceMonitor
3180
additionalLabels: {}
3181
## Scrape interval. If not set, the Prometheus default scrape interval is used.
3182
##
3183
interval: ""
3184
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
3185
## If not set, the default scrape class (if any) is used.
3186
##
3187
scrapeClass: ""
3188
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
3189
##
3190
sampleLimit: 0
3191
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
3192
##
3193
targetLimit: 0
3194
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3195
##
3196
labelLimit: 0
3197
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3198
##
3199
labelNameLengthLimit: 0
3200
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3201
##
3202
labelValueLengthLimit: 0
3203
## Scrape timeout. If not set, the Prometheus default scrape timeout is used.
3204
scrapeTimeout: ""
3205
## Metric relabel configs to apply to samples before ingestion.
3206
##
3207
metricRelabelings: []
3208
# - action: keep
3209
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
3210
# sourceLabels: [__name__]
3211
3212
# relabel configs to apply to samples before ingestion.
3213
##
3214
relabelings: []
3215
# - sourceLabels: [__meta_kubernetes_pod_node_name]
3216
# separator: ;
3217
# regex: ^(.*)$
3218
# targetLabel: nodename
3219
# replacement: $1
3220
# action: replace
3221
## Resource limits & requests
3222
##
3223
resources: {}
3224
# limits:
3225
# cpu: 200m
3226
# memory: 200Mi
3227
# requests:
3228
# cpu: 100m
3229
# memory: 100Mi
3230
3231
## Operator Environment
3232
## env:
3233
## VARIABLE: value
3234
env:
3235
GOGC: "30"
3236
# Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico),
3237
# because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working
3238
##
3239
hostNetwork: false
3240
## Define which Nodes the Pods are scheduled on.
3241
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
3242
##
3243
nodeSelector:
3244
kubernetes.io/os: linux
3245
## Tolerations for use with node taints
3246
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
3247
##
3248
tolerations: []
3249
# - key: "key"
3250
# operator: "Equal"
3251
# value: "value"
3252
# effect: "NoSchedule"
3253
3254
## Assign custom affinity rules to the prometheus operator
3255
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
3256
##
3257
affinity: {}
3258
# nodeAffinity:
3259
# requiredDuringSchedulingIgnoredDuringExecution:
3260
# nodeSelectorTerms:
3261
# - matchExpressions:
3262
# - key: kubernetes.io/e2e-az-name
3263
# operator: In
3264
# values:
3265
# - e2e-az1
3266
# - e2e-az2
3267
dnsConfig: {}
3268
# nameservers:
3269
# - 1.2.3.4
3270
# searches:
3271
# - ns1.svc.cluster-domain.example
3272
# - my.dns.search.suffix
3273
# options:
3274
# - name: ndots
3275
# value: "2"
3276
# - name: edns0
3277
securityContext:
3278
fsGroup: 65534
3279
runAsGroup: 65534
3280
runAsNonRoot: true
3281
runAsUser: 65534
3282
seccompProfile:
3283
type: RuntimeDefault
3284
## Setup hostUsers for prometheus-operator
3285
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/
3286
hostUsers: ~
3287
## Container-specific security context configuration
3288
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
3289
##
3290
containerSecurityContext:
3291
allowPrivilegeEscalation: false
3292
readOnlyRootFilesystem: true
3293
capabilities:
3294
drop:
3295
- ALL
3296
# Enable vertical pod autoscaler support for prometheus-operator
3297
verticalPodAutoscaler:
3298
enabled: false
3299
# Recommender responsible for generating recommendation for the object.
3300
# List should be empty (then the default recommender will generate the recommendation)
3301
# or contain exactly one recommender.
3302
# recommenders:
3303
# - name: custom-recommender-performance
3304
3305
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
3306
controlledResources: []
3307
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
3308
# controlledValues: RequestsAndLimits
3309
3310
# Define the max allowed resources for the pod
3311
maxAllowed: {}
3312
# cpu: 200m
3313
# memory: 100Mi
3314
# Define the min allowed resources for the pod
3315
minAllowed: {}
3316
# cpu: 200m
3317
# memory: 100Mi
3318
3319
updatePolicy:
3320
# Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
3321
# minReplicas: 1
3322
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
3323
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "InPlaceOrRecreate".
3324
updateMode: Recreate
3325
## Prometheus-operator image
3326
##
3327
image:
3328
registry: cgr.dev
3329
repository: chainguard-private/prometheus-operator
3330
# if not set appVersion field from Chart.yaml is used
3331
tag: 0.94.2-r1
3332
sha: sha256:491ec8cea95be36d30bd0028a3d4f9e2910658e339d548c376f89646cd74dabc
3333
pullPolicy: IfNotPresent
3334
## Prometheus image to use for prometheuses managed by the operator
3335
##
3336
# prometheusDefaultBaseImage: prometheus/prometheus
3337
3338
## Prometheus image registry to use for prometheuses managed by the operator
3339
##
3340
# prometheusDefaultBaseImageRegistry: quay.io
3341
3342
## Alertmanager image to use for alertmanagers managed by the operator
3343
##
3344
# alertmanagerDefaultBaseImage: prometheus/alertmanager
3345
3346
## Alertmanager image registry to use for alertmanagers managed by the operator
3347
##
3348
# alertmanagerDefaultBaseImageRegistry: quay.io
3349
3350
## Prometheus-config-reloader
3351
##
3352
prometheusConfigReloader:
3353
image:
3354
registry: cgr.dev
3355
repository: chainguard-private/prometheus-config-reloader
3356
# if not set appVersion field from Chart.yaml is used
3357
tag: 0.94.2-r1
3358
sha: sha256:b87ceb164a471df075461caab607dcd356566ec214e644ef32eb33659f1fbacf
3359
# add prometheus config reloader liveness and readiness probe. Default: false
3360
enableProbe: false
3361
# resource config for prometheusConfigReloader
3362
resources: {}
3363
# requests:
3364
# cpu: 200m
3365
# memory: 50Mi
3366
# limits:
3367
# cpu: 200m
3368
# memory: 50Mi
3369
## Thanos side-car image when configured
3370
##
3371
thanosImage:
3372
registry: cgr.dev
3373
repository: chainguard-private/thanos
3374
tag: 0.42.5-r1
3375
sha: sha256:4ab8fbbde01c6eb09a94d82a25742a3ca8ccf1b264adb9a11b5b76515581a534
3376
## Set a Label Selector to filter watched prometheus and prometheusAgent
3377
##
3378
prometheusInstanceSelector: ""
3379
## Set a Label Selector to filter watched alertmanager
3380
##
3381
alertmanagerInstanceSelector: ""
3382
## Set a Label Selector to filter watched thanosRuler
3383
thanosRulerInstanceSelector: ""
3384
## Set a Field Selector to filter watched secrets
3385
## `kubernetes.io/service-account-token` secrets are no longer excluded, so that changes to the
3386
## secret the control-plane ServiceMonitors authenticate with trigger a reconciliation.
3387
##
3388
secretFieldSelector: "type!=kubernetes.io/dockercfg,type!=helm.sh/release.v1"
3389
## Feature gates to enable/disable operator features, rendered as --feature-gates=<key>=<value>.
3390
## See https://prometheus-operator.dev/docs/platform/operator/ (`-feature-gates`)
3391
## Example:
3392
## featureGates:
3393
## PrometheusAgentDaemonSet: true
3394
## StatusForConfigurationResources: true
3395
featureGates: {}
3396
## If false then the user will opt out of automounting API credentials.
3397
##
3398
automountServiceAccountToken: true
3399
## Additional volumes
3400
##
3401
extraVolumes: []
3402
## Additional volume mounts
3403
##
3404
extraVolumeMounts: []
3405
## Deploy a Prometheus instance
3406
##
3407
prometheus:
3408
enabled: true
3409
## Toggle prometheus into agent mode
3410
## Note many of features described below (e.g. rules, query, alerting, remote read, thanos) will not work in agent mode.
3411
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/platform/prometheus-agent.md
3412
##
3413
agentMode: false
3414
## Annotations for Prometheus
3415
##
3416
annotations: {}
3417
## Additional labels for Prometheus
3418
##
3419
additionalLabels: {}
3420
## Configure network policy for the prometheus
3421
networkPolicy:
3422
enabled: false
3423
## Flavor of the network policy to use.
3424
# Can be:
3425
# * kubernetes for networking.k8s.io/v1/NetworkPolicy
3426
# * cilium for cilium.io/v2/CiliumNetworkPolicy
3427
flavor: kubernetes
3428
namespace:
3429
# cilium:
3430
# endpointSelector:
3431
# egress:
3432
# ingress:
3433
3434
# egress:
3435
# - {}
3436
# ingress:
3437
# - {}
3438
# podSelector:
3439
# matchLabels:
3440
# app: prometheus
3441
## Service account for Prometheuses to use.
3442
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3443
##
3444
serviceAccount:
3445
create: true
3446
name: ""
3447
annotations: {}
3448
automountServiceAccountToken: true
3449
## Create a `kubernetes.io/service-account-token` Secret for the Prometheus service account.
3450
## The control-plane ServiceMonitors reference it by default, because ServiceMonitors can only
3451
## authenticate through a Secret and Kubernetes no longer creates one automatically.
3452
## The resulting token is long-lived and does not expire; disable this and set the
3453
## `authorization` values of the control-plane components if you manage the credential yourself,
3454
## or enable `prometheus.controlPlaneScrapeClass` below to use the pod's projected token instead.
3455
## Only rendered together with the service account, so it requires `prometheus.enabled` and
3456
## `create` above. Leaving a control-plane component on the default `authorization` while the
3457
## Secret is not rendered is a rendering error rather than a silently broken ServiceMonitor.
3458
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#manually-create-an-api-token-for-a-serviceaccount
3459
##
3460
createTokenSecret: true
3461
## Scrape class for the control-plane ServiceMonitors (kubelet, kubeApiServer, kubeControllerManager,
3462
## kubeScheduler, kubeEtcd, kubeProxy, coreDns and kubeDns), as an alternative to the Secret above.
3463
## When enabled, the class is appended to `prometheusSpec.scrapeClasses` and each control-plane
3464
## ServiceMonitor selects it in place of its `serviceMonitor.authorization`. A ServiceMonitor whose `serviceMonitor.scrapeClass` names a
3465
## different class keeps its own `authorization`.
3466
## The default authorization reads the Prometheus pod's projected service account token, which the
3467
## kubelet rotates, so no long-lived token is needed; set `serviceAccount.createTokenSecret` to false
3468
## once every control-plane component uses this class.
3469
## Only applies to this chart's Prometheus (`prometheus.enabled`). Other scrapers that read these
3470
## ServiceMonitors, such as Grafana Alloy, do not support scrape classes and still need the Secret.
3471
## ref: https://prometheus-operator.dev/docs/developer/scrapeclass/
3472
##
3473
controlPlaneScrapeClass:
3474
enabled: false
3475
name: kube-prometheus-stack-control-plane
3476
authorization:
3477
type: Bearer
3478
credentialsFile: /var/run/secrets/kubernetes.io/serviceaccount/token
3479
# Service for thanos service discovery on sidecar
3480
# Enable this can make Thanos Query can use
3481
# `--store=dnssrv+_grpc._tcp.${kube-prometheus-stack.fullname}-thanos-discovery.${namespace}.svc.cluster.local` to discovery
3482
# Thanos sidecar on prometheus nodes
3483
# (Please remember to change ${kube-prometheus-stack.fullname} and ${namespace}. Not just copy and paste!)
3484
thanosService:
3485
enabled: false
3486
annotations: {}
3487
labels: {}
3488
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
3489
##
3490
externalTrafficPolicy: Cluster
3491
## Service type
3492
##
3493
type: ClusterIP
3494
## Service dual stack
3495
##
3496
ipDualStack:
3497
enabled: false
3498
ipFamilies: ["IPv6", "IPv4"]
3499
ipFamilyPolicy: "PreferDualStack"
3500
## gRPC port config
3501
portName: grpc
3502
port: 10901
3503
targetPort: "grpc"
3504
## HTTP port config (for metrics)
3505
httpPortName: http
3506
httpPort: 10902
3507
targetHttpPort: "http"
3508
## ClusterIP to assign
3509
# Default is to make this a headless service ("None")
3510
clusterIP: "None"
3511
## Port to expose on each node, if service type is NodePort
3512
##
3513
nodePort: 30901
3514
httpNodePort: 30902
3515
# ServiceMonitor to scrape Sidecar metrics
3516
# Needs thanosService to be enabled as well
3517
thanosServiceMonitor:
3518
enabled: false
3519
interval: ""
3520
## Additional labels
3521
##
3522
additionalLabels: {}
3523
## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
3524
scheme: ""
3525
## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
3526
## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#tlsconfig
3527
tlsConfig: {}
3528
bearerTokenFile:
3529
## Metric relabel configs to apply to samples before ingestion.
3530
metricRelabelings: []
3531
## relabel configs to apply to samples before ingestion.
3532
relabelings: []
3533
# Service for external access to sidecar
3534
# Enabling this creates a service to expose thanos-sidecar outside the cluster.
3535
thanosServiceExternal:
3536
enabled: false
3537
annotations: {}
3538
labels: {}
3539
loadBalancerIP: ""
3540
loadBalancerSourceRanges: []
3541
## gRPC port config
3542
portName: grpc
3543
port: 10901
3544
targetPort: "grpc"
3545
## HTTP port config (for metrics)
3546
httpPortName: http
3547
httpPort: 10902
3548
targetHttpPort: "http"
3549
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
3550
##
3551
externalTrafficPolicy: Cluster
3552
## Service type
3553
##
3554
type: LoadBalancer
3555
## Port to expose on each node
3556
##
3557
nodePort: 30901
3558
httpNodePort: 30902
3559
## Configuration for Prometheus service
3560
##
3561
service:
3562
enabled: true
3563
annotations: {}
3564
labels: {}
3565
clusterIP: ""
3566
ipDualStack:
3567
enabled: false
3568
ipFamilies: ["IPv6", "IPv4"]
3569
ipFamilyPolicy: "PreferDualStack"
3570
## Port for Prometheus Service to listen on
3571
##
3572
port: 9090
3573
## To be used with a proxy extraContainer port
3574
targetPort: 9090
3575
## Port for Prometheus Reloader to listen on
3576
##
3577
reloaderWebPort: 8080
3578
## Port to expose for Prometheus Reloader
3579
## Only used if service.type is 'NodePort'
3580
##
3581
reloaderWebNodePort: null
3582
## List of IP addresses at which the Prometheus server service is available
3583
## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
3584
##
3585
externalIPs: []
3586
## Port to expose on each node
3587
## Only used if service.type is 'NodePort'
3588
##
3589
nodePort: 30090
3590
## Loadbalancer IP
3591
## Only use if service.type is "LoadBalancer"
3592
loadBalancerIP: ""
3593
loadBalancerSourceRanges: []
3594
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
3595
##
3596
externalTrafficPolicy: Cluster
3597
## Service type
3598
##
3599
type: ClusterIP
3600
## Additional ports to open for Prometheus service
3601
##
3602
additionalPorts: []
3603
# additionalPorts:
3604
# - name: oauth-proxy
3605
# port: 8081
3606
# targetPort: 8081
3607
# - name: oauth-metrics
3608
# port: 8082
3609
# targetPort: 8082
3610
3611
## Consider that all endpoints are considered "ready" even if the Pods themselves are not
3612
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
3613
publishNotReadyAddresses: false
3614
## If you want to make sure that connections from a particular client are passed to the same Pod each time
3615
## Accepts 'ClientIP' or 'None'
3616
##
3617
sessionAffinity: None
3618
## If you want to modify the ClientIP sessionAffinity timeout
3619
## The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP"
3620
##
3621
sessionAffinityConfig:
3622
clientIP:
3623
timeoutSeconds: 10800
3624
## Configuration for creating a separate Service for each statefulset Prometheus replica
3625
##
3626
servicePerReplica:
3627
enabled: false
3628
annotations: {}
3629
## Port for Prometheus Service per replica to listen on
3630
##
3631
port: 9090
3632
## To be used with a proxy extraContainer port
3633
targetPort: 9090
3634
## Port to expose on each node
3635
## Only used if servicePerReplica.type is 'NodePort'
3636
##
3637
nodePort: 30091
3638
## Loadbalancer source IP ranges
3639
## Only used if servicePerReplica.type is "LoadBalancer"
3640
loadBalancerSourceRanges: []
3641
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
3642
##
3643
externalTrafficPolicy: Cluster
3644
## Service type
3645
##
3646
type: ClusterIP
3647
## Service dual stack
3648
##
3649
ipDualStack:
3650
enabled: false
3651
ipFamilies: ["IPv6", "IPv4"]
3652
ipFamilyPolicy: "PreferDualStack"
3653
## Configure pod disruption budgets for Prometheus
3654
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
3655
##
3656
podDisruptionBudget:
3657
enabled: false
3658
minAvailable: 1
3659
# maxUnavailable: ""
3660
unhealthyPodEvictionPolicy: AlwaysAllow
3661
## Enable vertical pod autoscaler support for Prometheus
3662
## ref: https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler
3663
##
3664
verticalPodAutoscaler:
3665
enabled: false
3666
# Recommender responsible for generating recommendation for the object.
3667
# List should be empty (then the default recommender will generate the recommendation)
3668
# or contain exactly one recommender.
3669
# recommenders:
3670
# - name: custom-recommender-performance
3671
3672
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
3673
controlledResources: []
3674
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
3675
# controlledValues: RequestsAndLimits
3676
3677
# Define the max allowed resources for the pod
3678
maxAllowed: {}
3679
# cpu: 200m
3680
# memory: 100Mi
3681
# Define the min allowed resources for the pod
3682
minAllowed: {}
3683
# cpu: 200m
3684
# memory: 100Mi
3685
3686
updatePolicy:
3687
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
3688
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "InPlaceOrRecreate".
3689
updateMode: Recreate
3690
# Ingress exposes thanos sidecar outside the cluster
3691
thanosIngress:
3692
enabled: false
3693
ingressClassName: ""
3694
annotations: {}
3695
labels: {}
3696
servicePort: 10901
3697
## Port to expose on each node
3698
## Only used if service.type is 'NodePort'
3699
##
3700
nodePort: 30901
3701
## Hosts must be provided if Ingress is enabled.
3702
##
3703
hosts: []
3704
# - thanos-gateway.domain.com
3705
3706
## Paths to use for ingress rules
3707
##
3708
paths: []
3709
# - /
3710
3711
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
3712
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
3713
# pathType: ImplementationSpecific
3714
3715
## TLS configuration for Thanos Ingress
3716
## Secret must be manually created in the namespace
3717
##
3718
tls: []
3719
# - secretName: thanos-gateway-tls
3720
# hosts:
3721
# - thanos-gateway.domain.com
3722
#
3723
## ExtraSecret can be used to store various data in an extra secret
3724
## (use it for example to store hashed basic auth credentials)
3725
extraSecret:
3726
## if not set, name will be auto generated
3727
# name: ""
3728
annotations: {}
3729
data: {}
3730
# auth: |
3731
# foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0
3732
# someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.
3733
3734
ingress:
3735
enabled: false
3736
ingressClassName: ""
3737
annotations: {}
3738
labels: {}
3739
## Redirect ingress to an additional defined port on the service
3740
# servicePort: 8081
3741
3742
## Hostnames.
3743
## Must be provided if Ingress is enabled.
3744
##
3745
# hosts:
3746
# - prometheus.domain.com
3747
hosts: []
3748
## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix
3749
##
3750
paths: []
3751
# - /
3752
3753
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
3754
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
3755
# pathType: ImplementationSpecific
3756
3757
## TLS configuration for Prometheus Ingress
3758
## Secret must be manually created in the namespace
3759
##
3760
tls: []
3761
# - secretName: prometheus-general-tls
3762
# hosts:
3763
# - prometheus.example.com
3764
# -- BETA: Configure the gateway routes for the chart here.
3765
# More routes can be added by adding a dictionary key like the 'main' route.
3766
# Be aware that this is an early beta of this feature,
3767
# kube-prometheus-stack does not guarantee this works and is subject to change.
3768
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
3769
# [[ref]](https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/#gatewaynetworkingk8siov1alpha2)
3770
route:
3771
main:
3772
# -- Enables or disables the route
3773
enabled: false
3774
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
3775
apiVersion: gateway.networking.k8s.io/v1
3776
# -- Set the route kind
3777
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
3778
kind: HTTPRoute
3779
annotations: {}
3780
labels: {}
3781
hostnames: []
3782
# - my-filter.example.com
3783
parentRefs: []
3784
# - name: acme-gw
3785
3786
# -- create http route for redirect (https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/#http-to-https-redirects)
3787
## Take care that you only enable this on the http listener of the gateway to avoid an infinite redirect.
3788
## matches, filters and additionalRules will be ignored if this is set to true. Be are
3789
httpsRedirect: false
3790
matches:
3791
- path:
3792
type: PathPrefix
3793
value: /
3794
## Filters define the filters that are applied to requests that match this rule.
3795
filters: []
3796
## Timeouts for the generated HTTPRoute backend rule.
3797
## Requires Gateway API CRDs and a controller that support HTTPRoute timeouts.
3798
timeouts: {}
3799
# request: 120s
3800
# backendRequest: 60s
3801
3802
## Session persistence configuration for the route rule.
3803
sessionPersistence: {}
3804
# sessionName: route
3805
# type: Cookie
3806
# absoluteTimeout: 12h
3807
# cookieConfig:
3808
# lifetimeType: Permanent
3809
3810
## Additional custom rules that can be added to the route
3811
additionalRules: []
3812
## Configuration for creating an Ingress that will map to each Prometheus replica service
3813
## prometheus.servicePerReplica must be enabled
3814
##
3815
ingressPerReplica:
3816
enabled: false
3817
ingressClassName: ""
3818
annotations: {}
3819
labels: {}
3820
## Final form of the hostname for each per replica ingress is
3821
## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }}
3822
##
3823
## Prefix for the per replica ingress that will have `-$replicaNumber`
3824
## appended to the end
3825
hostPrefix: ""
3826
## Domain that will be used for the per replica ingress
3827
hostDomain: ""
3828
## Paths to use for ingress rules
3829
##
3830
paths: []
3831
# - /
3832
3833
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
3834
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
3835
# pathType: ImplementationSpecific
3836
3837
## Secret name containing the TLS certificate for Prometheus per replica ingress
3838
## Secret must be manually created in the namespace
3839
tlsSecretName: ""
3840
## Separated secret for each per replica Ingress. Can be used together with cert-manager
3841
##
3842
tlsSecretPerReplica:
3843
enabled: false
3844
## Final form of the secret for each per replica ingress is
3845
## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}
3846
##
3847
prefix: "prometheus"
3848
## Configuration for creating a Gateway API route that will map to each Prometheus replica service
3849
## prometheus.servicePerReplica must be enabled
3850
##
3851
routePerReplica:
3852
main:
3853
# -- Enables or disables the routePerReplica
3854
enabled: false
3855
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
3856
apiVersion: gateway.networking.k8s.io/v1
3857
# -- Set the route kind
3858
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
3859
kind: HTTPRoute
3860
annotations: {}
3861
labels: {}
3862
## Final form of the hostname for each per replica route is
3863
## {{ routePerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ routePerReplica.hostDomain }}
3864
##
3865
## Prefix for the per replica route that will have `-$replicaNumber` appended to the end
3866
hostPrefix: ""
3867
## Domain that will be used for the per replica route
3868
hostDomain: ""
3869
parentRefs: []
3870
# - name: acme-gw
3871
3872
# -- create http route for redirect (https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/#http-to-https-redirects)
3873
## Take care that you only enable this on the http listener of the gateway to avoid an infinite redirect.
3874
## matches, filters and additionalRules will be ignored if this is set to true.
3875
httpsRedirect: false
3876
## Filters define the filters that are applied to requests that match this rule.
3877
filters: []
3878
matches:
3879
- path:
3880
type: PathPrefix
3881
value: /
3882
## Timeouts for the generated HTTPRoute backend rule.
3883
## Requires Gateway API CRDs and a controller that support HTTPRoute timeouts.
3884
timeouts: {}
3885
# request: 120s
3886
# backendRequest: 60s
3887
3888
## Session persistence configuration for the route rule.
3889
sessionPersistence: {}
3890
# sessionName: route
3891
# type: Cookie
3892
# absoluteTimeout: 12h
3893
# cookieConfig:
3894
# lifetimeType: Permanent
3895
3896
## Additional custom rules that can be added to the route
3897
additionalRules: []
3898
serviceMonitor:
3899
## If true, create a serviceMonitor for prometheus
3900
##
3901
selfMonitor: true
3902
## Scrape interval. If not set, the Prometheus default scrape interval is used.
3903
##
3904
interval: ""
3905
## Additional labels
3906
##
3907
additionalLabels: {}
3908
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
3909
## If not set, the default scrape class (if any) is used.
3910
##
3911
scrapeClass: ""
3912
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
3913
##
3914
sampleLimit: 0
3915
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
3916
##
3917
targetLimit: 0
3918
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3919
##
3920
labelLimit: 0
3921
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3922
##
3923
labelNameLengthLimit: 0
3924
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
3925
##
3926
labelValueLengthLimit: 0
3927
## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
3928
scheme: ""
3929
## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
3930
## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#tlsconfig
3931
tlsConfig: {}
3932
bearerTokenFile:
3933
## Metric relabel configs to apply to samples before ingestion.
3934
##
3935
metricRelabelings: []
3936
# - action: keep
3937
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
3938
# sourceLabels: [__name__]
3939
3940
# relabel configs to apply to samples before ingestion.
3941
##
3942
relabelings: []
3943
# - sourceLabels: [__meta_kubernetes_pod_node_name]
3944
# separator: ;
3945
# regex: ^(.*)$
3946
# targetLabel: nodename
3947
# replacement: $1
3948
# action: replace
3949
3950
## Additional Endpoints
3951
##
3952
additionalEndpoints: []
3953
# - port: oauth-metrics
3954
# path: /metrics
3955
## Settings affecting prometheusSpec
3956
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#prometheusspec
3957
##
3958
prometheusSpec:
3959
## Statefulset's persistent volume claim retention policy
3960
## whenDeleted and whenScaled determine whether
3961
## statefulset's PVCs are deleted (true) or retained (false)
3962
## on scaling down and deleting statefulset, respectively.
3963
## Requires Kubernetes version 1.27.0+.
3964
## Ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention
3965
persistentVolumeClaimRetentionPolicy: {}
3966
# whenDeleted: Retain
3967
# whenScaled: Retain
3968
3969
## If true, pass --storage.tsdb.max-block-duration=2h to prometheus. This is already done if using Thanos
3970
##
3971
disableCompaction: false
3972
## AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in the pod,
3973
## If the field isn't set, the operator mounts the service account token by default.
3974
## Warning: be aware that by default, Prometheus requires the service account token for Kubernetes service discovery,
3975
## It is possible to use strategic merge patch to project the service account token into the 'prometheus' container.
3976
automountServiceAccountToken: true
3977
## APIServerConfig
3978
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#apiserverconfig
3979
##
3980
apiserverConfig: {}
3981
## Allows setting additional arguments for the Prometheus container
3982
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.Prometheus
3983
additionalArgs: []
3984
## Convert all classic histograms to native histograms with custom buckets.
3985
## This corresponds to the 'convert_classic_histograms_to_nhcb' field in Prometheus configuration.
3986
##
3987
convertClassicHistogramsToNHCB: false
3988
## Enable scraping of classic histograms that are also exposed as native histograms.
3989
## This corresponds to the 'always_scrape_classic_histograms' field in Prometheus configuration.
3990
##
3991
scrapeClassicHistograms: false
3992
## Enable scraping of native histograms.
3993
## This corresponds to the 'scrape_native_histograms' field in Prometheus configuration.
3994
##
3995
scrapeNativeHistograms: false
3996
## File to which scrape failures are logged.
3997
## Reloading the configuration will reopen the file.
3998
## Defaults to empty (disabled)
3999
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.Prometheus
4000
##
4001
scrapeFailureLogFile: ""
4002
## Interval between consecutive scrapes.
4003
## Defaults to 30s.
4004
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/release-0.44/pkg/prometheus/promcfg.go#L180-L183
4005
##
4006
scrapeInterval: ""
4007
## Number of seconds to wait for target to respond before erroring
4008
##
4009
scrapeTimeout: ""
4010
## List of scrape classes to expose to scraping objects such as
4011
## PodMonitors, ServiceMonitors, Probes and ScrapeConfigs.
4012
##
4013
scrapeClasses: []
4014
# - name: istio-mtls
4015
# default: false
4016
# tlsConfig:
4017
# caFile: /etc/prometheus/secrets/istio.default/root-cert.pem
4018
# certFile: /etc/prometheus/secrets/istio.default/cert-chain.pem
4019
4020
## PodTargetLabels are appended to the `spec.podTargetLabels` field of all PodMonitor and ServiceMonitor objects.
4021
##
4022
podTargetLabels: []
4023
# - customlabel
4024
4025
## Interval between consecutive evaluations.
4026
##
4027
evaluationInterval: ""
4028
## ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP.
4029
##
4030
listenLocal: false
4031
## enableOTLPReceiver enables the OTLP receiver for Prometheus.
4032
enableOTLPReceiver: false
4033
## EnableAdminAPI enables Prometheus the administrative HTTP API which includes functionality such as deleting time series.
4034
## This is disabled by default.
4035
## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis
4036
##
4037
enableAdminAPI: false
4038
## Sets version of Prometheus overriding the Prometheus version as derived
4039
## from the image tag. Useful in cases where the tag does not follow semver v2.
4040
version: ""
4041
## WebTLSConfig defines the TLS parameters for HTTPS
4042
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#webtlsconfig
4043
web: {}
4044
## Exemplars related settings that are runtime reloadable.
4045
## It requires to enable the exemplar storage feature to be effective.
4046
exemplars: {}
4047
## Maximum number of exemplars stored in memory for all series.
4048
## If not set, Prometheus uses its default value.
4049
## A value of zero or less than zero disables the storage.
4050
# maxSize: 100000
4051
4052
# EnableFeatures API enables access to Prometheus disabled features.
4053
# ref: https://prometheus.io/docs/prometheus/latest/feature_flags/
4054
enableFeatures: []
4055
# - exemplar-storage
4056
4057
## https://prometheus.io/docs/guides/opentelemetry
4058
##
4059
otlp: {}
4060
# promoteResourceAttributes: []
4061
# keepIdentifyingResourceAttributes: false
4062
# translationStrategy: NoUTF8EscapingWithSuffixes
4063
# convertHistogramsToNHCB: false
4064
4065
##
4066
serviceName:
4067
## Image of Prometheus.
4068
##
4069
image:
4070
registry: cgr.dev
4071
repository: chainguard-private/prometheus
4072
tag: 3.15.1-r1
4073
sha: sha256:f8c6e747f6a604da0d21fe5aee3b0220302de4405d83ad33e4061771f81fd0a8
4074
pullPolicy: IfNotPresent
4075
## Tolerations for use with node taints
4076
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
4077
##
4078
tolerations: []
4079
# - key: "key"
4080
# operator: "Equal"
4081
# value: "value"
4082
# effect: "NoSchedule"
4083
4084
## If specified, the pod's topology spread constraints.
4085
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
4086
##
4087
topologySpreadConstraints: []
4088
# - maxSkew: 1
4089
# topologyKey: topology.kubernetes.io/zone
4090
# whenUnsatisfiable: DoNotSchedule
4091
# labelSelector:
4092
# matchLabels:
4093
# app: prometheus
4094
4095
## Disable alerting
4096
##
4097
disableAlerting: false
4098
## Alertmanagers to which alerts will be sent
4099
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#alertmanagerendpoints
4100
##
4101
## Default configuration will connect to the alertmanager deployed as part of this release
4102
##
4103
alertingEndpoints: []
4104
# - name: ""
4105
# namespace: ""
4106
# port: http
4107
# scheme: http
4108
# pathPrefix: ""
4109
# tlsConfig: {}
4110
# bearerTokenFile: ""
4111
# apiVersion: v2
4112
4113
## External labels to add to any time series or alerts when communicating with external systems
4114
##
4115
externalLabels: {}
4116
## enable --web.enable-remote-write-receiver flag on prometheus-server
4117
##
4118
enableRemoteWriteReceiver: false
4119
## Name of the external label used to denote replica name
4120
##
4121
replicaExternalLabelName: ""
4122
## If true, the Operator won't add the external label used to denote replica name
4123
##
4124
replicaExternalLabelNameClear: false
4125
## Name of the external label used to denote Prometheus instance name
4126
##
4127
prometheusExternalLabelName: ""
4128
## If true, the Operator won't add the external label used to denote Prometheus instance name
4129
##
4130
prometheusExternalLabelNameClear: false
4131
## External URL at which Prometheus will be reachable.
4132
##
4133
externalUrl: ""
4134
## Define which Nodes the Pods are scheduled on.
4135
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
4136
##
4137
nodeSelector:
4138
kubernetes.io/os: linux
4139
## Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods.
4140
## The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not
4141
## reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated
4142
## with the new list of secrets.
4143
##
4144
secrets: []
4145
## ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods.
4146
## The ConfigMaps are mounted into /etc/prometheus/configmaps/.
4147
##
4148
configMaps: []
4149
## QuerySpec defines the query command line flags when starting Prometheus.
4150
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#queryspec
4151
##
4152
query: {}
4153
## If nil, select own namespace. Namespaces to be selected for PrometheusRules discovery.
4154
ruleNamespaceSelector: {}
4155
## Example which selects PrometheusRules in namespaces with label "prometheus" set to "somelabel"
4156
# ruleNamespaceSelector:
4157
# matchLabels:
4158
# prometheus: somelabel
4159
4160
## If true, a nil or {} value for prometheus.prometheusSpec.ruleSelector will cause the
4161
## prometheus resource to be created with selectors based on values in the helm deployment,
4162
## which will also match the PrometheusRule resources created
4163
##
4164
ruleSelectorNilUsesHelmValues: true
4165
## PrometheusRules to be selected for target discovery.
4166
## If {}, select all PrometheusRules
4167
##
4168
ruleSelector: {}
4169
## Example which select all PrometheusRules resources
4170
## with label "prometheus" with values any of "example-rules" or "example-rules-2"
4171
# ruleSelector:
4172
# matchExpressions:
4173
# - key: prometheus
4174
# operator: In
4175
# values:
4176
# - example-rules
4177
# - example-rules-2
4178
#
4179
## Example which select all PrometheusRules resources with label "role" set to "example-rules"
4180
# ruleSelector:
4181
# matchLabels:
4182
# role: example-rules
4183
4184
## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the
4185
## prometheus resource to be created with selectors based on values in the helm deployment,
4186
## which will also match the servicemonitors created
4187
##
4188
serviceMonitorSelectorNilUsesHelmValues: true
4189
## ServiceMonitors to be selected for target discovery.
4190
## If {}, select all ServiceMonitors
4191
##
4192
serviceMonitorSelector: {}
4193
## Example which selects ServiceMonitors with label "prometheus" set to "somelabel"
4194
# serviceMonitorSelector:
4195
# matchLabels:
4196
# prometheus: somelabel
4197
4198
## Namespaces to be selected for ServiceMonitor discovery.
4199
##
4200
serviceMonitorNamespaceSelector: {}
4201
## Example which selects ServiceMonitors in namespaces with label "prometheus" set to "somelabel"
4202
# serviceMonitorNamespaceSelector:
4203
# matchLabels:
4204
# prometheus: somelabel
4205
4206
## If true, a nil or {} value for prometheus.prometheusSpec.podMonitorSelector will cause the
4207
## prometheus resource to be created with selectors based on values in the helm deployment,
4208
## which will also match the podmonitors created
4209
##
4210
podMonitorSelectorNilUsesHelmValues: true
4211
## PodMonitors to be selected for target discovery.
4212
## If {}, select all PodMonitors
4213
##
4214
podMonitorSelector: {}
4215
## Example which selects PodMonitors with label "prometheus" set to "somelabel"
4216
# podMonitorSelector:
4217
# matchLabels:
4218
# prometheus: somelabel
4219
4220
## If nil, select own namespace. Namespaces to be selected for PodMonitor discovery.
4221
podMonitorNamespaceSelector: {}
4222
## Example which selects PodMonitor in namespaces with label "prometheus" set to "somelabel"
4223
# podMonitorNamespaceSelector:
4224
# matchLabels:
4225
# prometheus: somelabel
4226
4227
## If true, a nil or {} value for prometheus.prometheusSpec.probeSelector will cause the
4228
## prometheus resource to be created with selectors based on values in the helm deployment,
4229
## which will also match the probes created
4230
##
4231
probeSelectorNilUsesHelmValues: true
4232
## Probes to be selected for target discovery.
4233
## If {}, select all Probes
4234
##
4235
probeSelector: {}
4236
## Example which selects Probes with label "prometheus" set to "somelabel"
4237
# probeSelector:
4238
# matchLabels:
4239
# prometheus: somelabel
4240
4241
## If nil, select own namespace. Namespaces to be selected for Probe discovery.
4242
probeNamespaceSelector: {}
4243
## Example which selects Probe in namespaces with label "prometheus" set to "somelabel"
4244
# probeNamespaceSelector:
4245
# matchLabels:
4246
# prometheus: somelabel
4247
4248
## If true, a nil or {} value for prometheus.prometheusSpec.scrapeConfigSelector will cause the
4249
## prometheus resource to be created with selectors based on values in the helm deployment,
4250
## which will also match the scrapeConfigs created
4251
##
4252
## If null and scrapeConfigSelector is also null, exclude field from the prometheusSpec
4253
## (keeping downward compatibility with older versions of CRD)
4254
##
4255
scrapeConfigSelectorNilUsesHelmValues: true
4256
## scrapeConfigs to be selected for target discovery.
4257
## If {}, select all scrapeConfigs
4258
##
4259
scrapeConfigSelector: {}
4260
## Example which selects scrapeConfigs with label "prometheus" set to "somelabel"
4261
# scrapeConfigSelector:
4262
# matchLabels:
4263
# prometheus: somelabel
4264
4265
## If nil, select own namespace. Namespaces to be selected for scrapeConfig discovery.
4266
## If null, exclude the field from the prometheusSpec (keeping downward compatibility with older versions of CRD)
4267
scrapeConfigNamespaceSelector: {}
4268
## Example which selects scrapeConfig in namespaces with label "prometheus" set to "somelabel"
4269
# scrapeConfigNamespaceSelector:
4270
# matchLabels:
4271
# prometheus: somelabel
4272
4273
## How long to retain metrics
4274
##
4275
retention: 10d
4276
## Maximum size of metrics
4277
## Unit format should be in the form of "50GiB"
4278
retentionSize: ""
4279
## Maximum percentage of the data volume's capacity used by the metrics, between 0 and 100.
4280
## Requires Prometheus >= v3.11.0, ignored by older versions.
4281
retentionPercentage: ""
4282
## Allow out-of-order/out-of-bounds samples ingested into Prometheus for a specified duration
4283
## See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tsdb
4284
tsdb:
4285
outOfOrderTimeWindow: 0s
4286
## Per-chunk-type encoding overrides, requires Prometheus >= v3.13.0.
4287
chunkEncoding: {}
4288
# floats: Xor2
4289
4290
## Ratio of stale series in memory, between 0 and 1, at which stale series are compacted into persistent blocks.
4291
staleSeriesCompactionThreshold: ""
4292
## Enable compression of the write-ahead log using Snappy.
4293
##
4294
walCompression: true
4295
## If true, the Operator won't process any Prometheus configuration changes
4296
##
4297
paused: false
4298
## Number of replicas of each shard to deploy for a Prometheus deployment.
4299
## Number of replicas multiplied by shards is the total number of Pods created.
4300
##
4301
replicas: 1
4302
## EXPERIMENTAL: Number of shards to distribute targets onto.
4303
## Number of replicas multiplied by shards is the total number of Pods created.
4304
## Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved.
4305
## Increasing shards will not reshard data either but it will continue to be available from the same instances.
4306
## To query globally use Thanos sidecar and Thanos querier or remote write data to a central location.
4307
## Sharding is done on the content of the `__address__` target meta-label.
4308
## Set shards to null to omit spec.shards from the Prometheus custom resource (the operator then
4309
## defaults to 1 shard). Omitting the field lets an external autoscaler such as an HPA or a KEDA
4310
## ScaledObject own spec.shards through the /scale subresource without Helm reverting it.
4311
##
4312
shards: 1
4313
## Log level for Prometheus be configured in
4314
##
4315
logLevel: info
4316
## Log format for Prometheus be configured in
4317
##
4318
logFormat: logfmt
4319
## Prefix used to register routes, overriding externalUrl route.
4320
## Useful for proxies that rewrite URLs.
4321
##
4322
routePrefix: /
4323
## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata
4324
## Metadata Labels and Annotations gets propagated to the prometheus pods.
4325
##
4326
podMetadata: {}
4327
# labels:
4328
# app: prometheus
4329
# k8s-app: prometheus
4330
4331
## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.
4332
## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.
4333
## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node.
4334
## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured.
4335
podAntiAffinity: "soft"
4336
## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.
4337
## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone
4338
##
4339
podAntiAffinityTopologyKey: kubernetes.io/hostname
4340
## Assign custom affinity rules to the prometheus instance
4341
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
4342
##
4343
affinity: {}
4344
# nodeAffinity:
4345
# requiredDuringSchedulingIgnoredDuringExecution:
4346
# nodeSelectorTerms:
4347
# - matchExpressions:
4348
# - key: kubernetes.io/e2e-az-name
4349
# operator: In
4350
# values:
4351
# - e2e-az1
4352
# - e2e-az2
4353
4354
## The remote_read spec configuration for Prometheus.
4355
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#remotereadspec
4356
remoteRead: []
4357
# - url: http://remote1/read
4358
## additionalRemoteRead is appended to remoteRead
4359
additionalRemoteRead: []
4360
## The remote_write spec configuration for Prometheus.
4361
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#remotewritespec
4362
remoteWrite: []
4363
# - url: http://remote1/push
4364
## additionalRemoteWrite is appended to remoteWrite
4365
additionalRemoteWrite: []
4366
## Enable/Disable Grafana dashboards provisioning for prometheus remote write feature
4367
remoteWriteDashboards: false
4368
## Resource limits & requests
4369
##
4370
resources: {}
4371
# requests:
4372
# memory: 400Mi
4373
4374
## Prometheus StorageSpec for persistent data
4375
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/platform/storage.md
4376
##
4377
storageSpec: {}
4378
## Using PersistentVolumeClaim
4379
##
4380
# volumeClaimTemplate:
4381
# spec:
4382
# storageClassName: gluster
4383
# accessModes: ["ReadWriteOnce"]
4384
# resources:
4385
# requests:
4386
# storage: 50Gi
4387
# selector: {}
4388
4389
## Using tmpfs volume
4390
##
4391
# emptyDir:
4392
# medium: Memory
4393
4394
# Additional volumes on the output StatefulSet definition.
4395
volumes: []
4396
# Additional VolumeMounts on the output StatefulSet definition.
4397
volumeMounts: []
4398
## AdditionalScrapeConfigs allows specifying additional Prometheus scrape configurations. Scrape configurations
4399
## are appended to the configurations generated by the Prometheus Operator. Job configurations must have the form
4400
## as specified in the official Prometheus documentation:
4401
## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are
4402
## appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility
4403
## to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible
4404
## scrape configs are going to break Prometheus after the upgrade.
4405
## AdditionalScrapeConfigs can be defined as a list or as a templated string.
4406
##
4407
## The scrape configuration example below will find master nodes, provided they have the name .*mst.*, relabel the
4408
## port to 2379 and allow etcd scraping provided it is running on all Kubernetes master nodes
4409
##
4410
additionalScrapeConfigs: []
4411
# - job_name: kube-etcd
4412
# kubernetes_sd_configs:
4413
# - role: node
4414
# scheme: https
4415
# tls_config:
4416
# ca_file: /etc/prometheus/secrets/etcd-client-cert/etcd-ca
4417
# cert_file: /etc/prometheus/secrets/etcd-client-cert/etcd-client
4418
# key_file: /etc/prometheus/secrets/etcd-client-cert/etcd-client-key
4419
# relabel_configs:
4420
# - action: labelmap
4421
# regex: __meta_kubernetes_node_label_(.+)
4422
# - source_labels: [__address__]
4423
# action: replace
4424
# target_label: __address__
4425
# regex: ([^:;]+):(\d+)
4426
# replacement: ${1}:2379
4427
# - source_labels: [__meta_kubernetes_node_name]
4428
# action: keep
4429
# regex: .*mst.*
4430
# - source_labels: [__meta_kubernetes_node_name]
4431
# action: replace
4432
# target_label: node
4433
# regex: (.*)
4434
# replacement: ${1}
4435
# metric_relabel_configs:
4436
# - regex: (kubernetes_io_hostname|failure_domain_beta_kubernetes_io_region|beta_kubernetes_io_os|beta_kubernetes_io_arch|beta_kubernetes_io_instance_type|failure_domain_beta_kubernetes_io_zone)
4437
# action: labeldrop
4438
#
4439
## If scrape config contains a repetitive section, you may want to use a template.
4440
## In the following example, you can see how to define `gce_sd_configs` for multiple zones
4441
# additionalScrapeConfigs: |
4442
# - job_name: "node-exporter"
4443
# gce_sd_configs:
4444
# {{range $zone := .Values.gcp_zones}}
4445
# - project: "project1"
4446
# zone: "{{$zone}}"
4447
# port: 9100
4448
# {{end}}
4449
# relabel_configs:
4450
# ...
4451
4452
## If additional scrape configurations are already deployed in a single secret file you can use this section.
4453
## Expected values are the secret name and key
4454
## Cannot be used with additionalScrapeConfigs
4455
additionalScrapeConfigsSecret: {}
4456
# enabled: false
4457
# name:
4458
# key:
4459
4460
## additionalPrometheusSecretsAnnotations allows to add annotations to the kubernetes secret. This can be useful
4461
## when deploying via spinnaker to disable versioning on the secret, strategy.spinnaker.io/versioned: 'false'
4462
additionalPrometheusSecretsAnnotations: {}
4463
## AdditionalAlertManagerConfigs allows for manual configuration of alertmanager jobs in the form as specified
4464
## in the official Prometheus documentation https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config.
4465
## AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator.
4466
## As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this
4467
## feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release
4468
## notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.
4469
##
4470
additionalAlertManagerConfigs: []
4471
# - consul_sd_configs:
4472
# - server: consul.dev.test:8500
4473
# scheme: http
4474
# datacenter: dev
4475
# tag_separator: ','
4476
# services:
4477
# - metrics-prometheus-alertmanager
4478
4479
## If additional alertmanager configurations are already deployed in a single secret, or you want to manage
4480
## them separately from the helm deployment, you can use this section.
4481
## Expected values are the secret name and key
4482
## Cannot be used with additionalAlertManagerConfigs
4483
additionalAlertManagerConfigsSecret: {}
4484
# name:
4485
# key:
4486
# optional: false
4487
4488
## AdditionalAlertRelabelConfigs allows specifying Prometheus alert relabel configurations. Alert relabel configurations specified are appended
4489
## to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the
4490
## official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs.
4491
## As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the
4492
## possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel
4493
## configs are going to break Prometheus after the upgrade.
4494
##
4495
additionalAlertRelabelConfigs: []
4496
# - separator: ;
4497
# regex: prometheus_replica
4498
# replacement: $1
4499
# action: labeldrop
4500
4501
## If additional alert relabel configurations are already deployed in a single secret, or you want to manage
4502
## them separately from the helm deployment, you can use this section.
4503
## Expected values are the secret name and key
4504
## Cannot be used with additionalAlertRelabelConfigs
4505
additionalAlertRelabelConfigsSecret: {}
4506
# name:
4507
# key:
4508
4509
## SecurityContext holds pod-level security attributes and common container settings.
4510
## This defaults to non root user with uid 1000 and gid 2000.
4511
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md
4512
##
4513
securityContext:
4514
runAsGroup: 2000
4515
runAsNonRoot: true
4516
runAsUser: 1000
4517
fsGroup: 2000
4518
seccompProfile:
4519
type: RuntimeDefault
4520
## DNS configuration for Prometheus.
4521
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.PodDNSConfig
4522
dnsConfig: {}
4523
## DNS policy for Prometheus.
4524
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#dnspolicystring-alias
4525
dnsPolicy: ""
4526
## Priority class assigned to the Pods
4527
##
4528
priorityClassName: ""
4529
## Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment.
4530
## This section is experimental, it may change significantly without deprecation notice in any release.
4531
## This is experimental and may change significantly without backward compatibility in any release.
4532
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#thanosspec
4533
##
4534
thanos: {}
4535
# image: quay.io/thanos/thanos
4536
# secretProviderClass:
4537
# provider: gcp
4538
# parameters:
4539
# secrets: |
4540
# - resourceName: "projects/$PROJECT_ID/secrets/testsecret/versions/latest"
4541
# fileName: "objstore.yaml"
4542
## ObjectStorageConfig configures object storage in Thanos.
4543
# objectStorageConfig:
4544
# # use existing secret, if configured, objectStorageConfig.secret will not be used
4545
# existingSecret: {}
4546
# # name: ""
4547
# # key: ""
4548
# # will render objectStorageConfig secret data and configure it to be used by Thanos custom resource,
4549
# # ignored when prometheusspec.thanos.objectStorageConfig.existingSecret is set
4550
# # https://thanos.io/tip/thanos/storage.md/#s3
4551
# secret: {}
4552
# # type: S3
4553
# # config:
4554
# # bucket: ""
4555
# # endpoint: ""
4556
# # region: ""
4557
# # access_key: ""
4558
# # secret_key: ""
4559
4560
## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to a Prometheus pod.
4561
## if using proxy extraContainer update targetPort with proxy container port
4562
containers: []
4563
# containers:
4564
# - name: oauth-proxy
4565
# image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.5
4566
# args:
4567
# - --upstream=http://127.0.0.1:9090
4568
# - --http-address=0.0.0.0:8081
4569
# - --metrics-address=0.0.0.0:8082
4570
# - ...
4571
# ports:
4572
# - containerPort: 8081
4573
# name: oauth-proxy
4574
# protocol: TCP
4575
# - containerPort: 8082
4576
# name: oauth-metrics
4577
# protocol: TCP
4578
# resources: {}
4579
4580
## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes
4581
## (permissions, dir tree) on mounted volumes before starting prometheus
4582
initContainers: []
4583
## PortName to use for Prometheus.
4584
##
4585
portName: "http-web"
4586
## ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files
4587
## on the file system of the Prometheus container e.g. bearer token files.
4588
arbitraryFSAccessThroughSMs: false
4589
## OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor
4590
## or PodMonitor to true, this overrides honor_labels to false.
4591
overrideHonorLabels: false
4592
## OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs.
4593
overrideHonorTimestamps: false
4594
## When ignoreNamespaceSelectors is set to true, namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored,
4595
## they will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object,
4596
## and servicemonitors will be installed in the default service namespace.
4597
## Defaults to false.
4598
ignoreNamespaceSelectors: false
4599
## EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created.
4600
## The label value will always be the namespace of the object that is being created.
4601
## Disabled by default
4602
enforcedNamespaceLabel: ""
4603
## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels.
4604
## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair
4605
## Deprecated, use `excludedFromEnforcement` instead
4606
prometheusRulesExcludedFromEnforce: []
4607
## ExcludedFromEnforcement - list of object references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects
4608
## to be excluded from enforcing a namespace label of origin.
4609
## Works only if enforcedNamespaceLabel set to true.
4610
## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#objectreference
4611
excludedFromEnforcement: []
4612
## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable,
4613
## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such
4614
## as /dev/stdout to log querie information to the default Prometheus log stream. This is only available in versions
4615
## of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/)
4616
queryLogFile: false
4617
# Use to set global sample_limit for Prometheus. This act as default SampleLimit for ServiceMonitor or/and PodMonitor.
4618
# Set to 'false' to disable global sample_limit. or set to a number to override the default value.
4619
sampleLimit: false
4620
## TargetLimit defines a global limit on the number of scraped targets. 0 means no limit.
4621
targetLimit: 0
4622
## Per-scrape limit on number of labels that will be accepted for a sample. 0 means no limit.
4623
labelLimit: 0
4624
## Per-scrape limit on length of labels name that will be accepted for a sample. 0 means no limit.
4625
labelNameLengthLimit: 0
4626
## Per-scrape limit on length of labels value that will be accepted for a sample. 0 means no limit.
4627
labelValueLengthLimit: 0
4628
## Per-scrape limit on the number of targets dropped by relabeling that will be kept in memory. 0 means no limit.
4629
keepDroppedTargets: 0
4630
## BodySizeLimit defines a global limit on the size of uncompressed response body that will be accepted. Example: 100MB.
4631
bodySizeLimit: ""
4632
## EnforcedBodySizeLimit defines the maximum size of uncompressed response body that will be accepted, overriding any
4633
## value set per ServiceMonitor/PodMonitor. Example: 100MB. Empty means no limit.
4634
enforcedBodySizeLimit: ""
4635
# EnforcedKeepDroppedTargetsLimit defines on the number of targets dropped by relabeling that will be kept in memory.
4636
# The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets
4637
# is greater than zero and less than spec.enforcedKeepDroppedTargets. 0 means no limit.
4638
enforcedKeepDroppedTargets: 0
4639
## EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit
4640
## set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall
4641
## number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead.
4642
enforcedSampleLimit: false
4643
## EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set
4644
## per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the TargetLimit to keep the overall
4645
## number of targets under the desired limit. Note that if TargetLimit is lower, that value will be taken instead, except
4646
## if either value is zero, in which case the non-zero value will be used. If both values are zero, no limit is enforced.
4647
enforcedTargetLimit: false
4648
## Per-scrape limit on number of labels that will be accepted for a sample. If more than this number of labels are present
4649
## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions
4650
## 2.27.0 and newer.
4651
enforcedLabelLimit: false
4652
## Per-scrape limit on length of labels name that will be accepted for a sample. If a label name is longer than this number
4653
## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions
4654
## 2.27.0 and newer.
4655
enforcedLabelNameLengthLimit: false
4656
## Per-scrape limit on length of labels value that will be accepted for a sample. If a label value is longer than this
4657
## number post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus
4658
## versions 2.27.0 and newer.
4659
enforcedLabelValueLengthLimit: false
4660
## AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental
4661
## in Prometheus so it may change in any upcoming release.
4662
allowOverlappingBlocks: false
4663
## Specifies the validation scheme for metric and label names.
4664
## Supported values are: Legacy, UTF8
4665
nameValidationScheme: ""
4666
## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to
4667
## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).
4668
minReadySeconds: 0
4669
## Duration in seconds the pod needs to terminate gracefully.
4670
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
4671
terminationGracePeriodSeconds: ~
4672
# Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico),
4673
# because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working
4674
# Use the host's network namespace if true. Make sure to understand the security implications if you want to enable it.
4675
# When hostNetwork is enabled, this will set dnsPolicy to ClusterFirstWithHostNet automatically.
4676
hostNetwork: false
4677
## Use the host's user namespace for Prometheus pods.
4678
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/
4679
hostUsers: ~
4680
# HostAlias holds the mapping between IP and hostnames that will be injected
4681
# as an entry in the pod's hosts file.
4682
hostAliases: []
4683
# - ip: 10.10.0.100
4684
# hostnames:
4685
# - a1.app.local
4686
# - b1.app.local
4687
4688
## TracingConfig configures tracing in Prometheus.
4689
## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#prometheustracingconfig
4690
tracingConfig: {}
4691
## Defines the service discovery role used to discover targets from ServiceMonitor objects and Alertmanager endpoints.
4692
## If set, the value should be either "Endpoints" or "EndpointSlice". If unset, the operator assumes the "Endpoints" role.
4693
serviceDiscoveryRole: ""
4694
## EnableServiceLinks indicates whether information about services should be injected into the pod's environment
4695
## variables. Uses the operator/Kubernetes default when left unset (~).
4696
enableServiceLinks: ~
4697
## Set the scheduler name to use for the Prometheus pods.
4698
schedulerName: ""
4699
## Specifies the character escaping scheme applied to metric and label names.
4700
## Supported values are: AllowUTF8, Underscores, Dots, Values
4701
nameEscapingScheme: ""
4702
## Defines the strategy used to reload the Prometheus configuration.
4703
## Supported values are: HTTP, ProcessSignal
4704
reloadStrategy: ""
4705
## Defines the offset the rule evaluation timestamp of the rule evaluation queries is shifted backwards.
4706
## ref: https://github.com/prometheus-community/helm-charts/issues/5843
4707
ruleQueryOffset: ""
4708
## Configuration of the Prometheus rules' engine. Changing these triggers a restart of the pods.
4709
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.Rules
4710
rules: {}
4711
# alert:
4712
# forOutageTolerance: 1h
4713
# forGracePeriod: 10m
4714
# resendDelay: 1m
4715
4716
## RuntimeConfig configures the values for the Prometheus process behavior.
4717
runtime: {}
4718
# goGC: 75
4719
4720
## Defines the sharding strategy applied by the operator.
4721
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ShardingStrategy
4722
shardingStrategy: {}
4723
## Defines the retention policy for the resources of stale shards after a scale-down.
4724
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ShardRetentionPolicy
4725
shardRetentionPolicy: {}
4726
## List of the protobuf message versions to accept when receiving the remote writes. Example: [V1.0, V2.0].
4727
remoteWriteReceiverMessageVersions: []
4728
## Pod management policy. Kubernetes default is OrderedReady but prometheus-operator default is Parallel.
4729
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
4730
podManagementPolicy: ""
4731
## Update strategy for the StatefulSet.
4732
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
4733
updateStrategy: {}
4734
# type: RollingUpdate
4735
# rollingUpdate:
4736
# maxUnavailable: 1
4737
4738
## Additional configuration which is not covered by the properties above. (passed through tpl)
4739
additionalConfig: {}
4740
## Additional configuration which is not covered by the properties above.
4741
## Useful, if you need advanced templating inside alertmanagerSpec.
4742
## Otherwise, use prometheus.prometheusSpec.additionalConfig (passed through tpl)
4743
additionalConfigString: ""
4744
## Defines the maximum time that the `prometheus` container's startup probe
4745
## will wait before being considered failed. The startup probe will return
4746
## success after the WAL replay is complete. If set, the value should be
4747
## greater than 60 (seconds). Otherwise it will be equal to 900 seconds (15
4748
## minutes).
4749
maximumStartupDurationSeconds: 0
4750
## Set default scrapeProtocols for Prometheus instances
4751
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#scrapeprotocolstring-alias
4752
scrapeProtocols: []
4753
additionalRulesForClusterRole: []
4754
# - apiGroups: [ "" ]
4755
# resources:
4756
# - nodes/proxy
4757
# verbs: [ "get", "list", "watch" ]
4758
4759
## Additional ServiceMonitors to deploy as a list or map.
4760
## Maps allow individual monitors and their fields to be merged across values files.
4761
## Set a map entry to null to remove it when overriding values.
4762
## The map key is used as the name unless an explicit name is set.
4763
## Nested lists such as endpoints are replaced when overridden.
4764
##
4765
additionalServiceMonitors: null
4766
## Map example:
4767
# example-service:
4768
# selector:
4769
# matchLabels:
4770
# app: example-service
4771
# endpoints:
4772
# - port: metrics
4773
4774
## List example and available fields:
4775
## Name of the ServiceMonitor to create (required for list entries)
4776
##
4777
# - name: ""
4778
4779
## Additional labels to set used for the ServiceMonitorSelector. Together with standard labels from
4780
## the chart
4781
##
4782
# additionalLabels: {}
4783
4784
## Service label for use in assembling a job name of the form <label value>-<port>
4785
## If no label is specified, the service name is used.
4786
##
4787
# jobLabel: ""
4788
4789
## labels to transfer from the kubernetes service to the target
4790
##
4791
# targetLabels: []
4792
4793
## labels to transfer from the kubernetes pods to the target
4794
##
4795
# podTargetLabels: []
4796
4797
## Label selector for services to which this ServiceMonitor applies
4798
##
4799
# selector: {}
4800
## Example which selects all services to be monitored
4801
## with label "monitoredby" with values any of "example-service-1" or "example-service-2"
4802
# matchExpressions:
4803
# - key: "monitoredby"
4804
# operator: In
4805
# values:
4806
# - example-service-1
4807
# - example-service-2
4808
4809
## label selector for services
4810
##
4811
# matchLabels: {}
4812
4813
## Namespaces from which services are selected
4814
##
4815
# namespaceSelector:
4816
## Match any namespace
4817
##
4818
# any: false
4819
4820
## Explicit list of namespace names to select
4821
##
4822
# matchNames: []
4823
4824
## Endpoints of the selected service to be monitored
4825
##
4826
# endpoints: []
4827
## Name of the endpoint's service port
4828
## Mutually exclusive with targetPort
4829
# - port: ""
4830
4831
## Name or number of the endpoint's target port
4832
## Mutually exclusive with port
4833
# - targetPort: ""
4834
4835
## File containing bearer token to be used when scraping targets
4836
##
4837
# bearerTokenFile: ""
4838
4839
## Interval at which metrics should be scraped
4840
##
4841
# interval: 30s
4842
4843
## HTTP path to scrape for metrics
4844
##
4845
# path: /metrics
4846
4847
## HTTP scheme to use for scraping
4848
##
4849
# scheme: http
4850
4851
## TLS configuration to use when scraping the endpoint
4852
##
4853
# tlsConfig:
4854
4855
## Path to the CA file
4856
##
4857
# caFile: ""
4858
4859
## Path to client certificate file
4860
##
4861
# certFile: ""
4862
4863
## Skip certificate verification
4864
##
4865
# insecureSkipVerify: false
4866
4867
## Path to client key file
4868
##
4869
# keyFile: ""
4870
4871
## Server name used to verify host name
4872
##
4873
# serverName: ""
4874
4875
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
4876
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
4877
##
4878
# metricRelabelings: []
4879
# - action: keep
4880
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
4881
# sourceLabels: [__name__]
4882
4883
## RelabelConfigs to apply to samples before scraping
4884
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
4885
##
4886
# relabelings: []
4887
# - sourceLabels: [__meta_kubernetes_pod_node_name]
4888
# separator: ;
4889
# regex: ^(.*)$
4890
# targetLabel: nodename
4891
# replacement: $1
4892
# action: replace
4893
4894
## Fallback scrape protocol used by Prometheus for scraping metrics
4895
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ScrapeProtocol
4896
##
4897
# fallbackScrapeProtocol: ""
4898
4899
## Attaches node metadata to the discovered targets
4900
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.AttachMetadata
4901
##
4902
# attachMetadata:
4903
# node: true
4904
4905
## Additional PodMonitors to deploy as a list or map.
4906
## Maps allow individual monitors and their fields to be merged across values files.
4907
## Set a map entry to null to remove it when overriding values.
4908
## The map key is used as the name unless an explicit name is set.
4909
## Nested lists such as podMetricsEndpoints are replaced when overridden.
4910
##
4911
additionalPodMonitors: null
4912
## Map example:
4913
# example-pod:
4914
# selector:
4915
# matchLabels:
4916
# app: example-pod
4917
# podMetricsEndpoints:
4918
# - port: metrics
4919
## List example and available fields:
4920
## Name of the PodMonitor to create (required for list entries)
4921
##
4922
# - name: ""
4923
4924
## Additional labels to set used for the PodMonitorSelector. Together with standard labels from
4925
## the chart
4926
##
4927
# additionalLabels: {}
4928
4929
## Pod label for use in assembling a job name of the form <label value>-<port>
4930
## If no label is specified, the pod endpoint name is used.
4931
##
4932
# jobLabel: ""
4933
4934
## Label selector for pods to which this PodMonitor applies
4935
##
4936
# selector: {}
4937
## Example which selects all Pods to be monitored
4938
## with label "monitoredby" with values any of "example-pod-1" or "example-pod-2"
4939
# matchExpressions:
4940
# - key: "monitoredby"
4941
# operator: In
4942
# values:
4943
# - example-pod-1
4944
# - example-pod-2
4945
4946
## label selector for pods
4947
##
4948
# matchLabels: {}
4949
4950
## PodTargetLabels transfers labels on the Kubernetes Pod onto the target.
4951
##
4952
# podTargetLabels: {}
4953
4954
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
4955
##
4956
# sampleLimit: 0
4957
4958
## Namespaces from which pods are selected
4959
##
4960
# namespaceSelector:
4961
## Match any namespace
4962
##
4963
# any: false
4964
4965
## Explicit list of namespace names to select
4966
##
4967
# matchNames: []
4968
4969
## Endpoints of the selected pods to be monitored
4970
## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#podmetricsendpoint
4971
##
4972
# podMetricsEndpoints: []
4973
4974
## Fallback scrape protocol used by Prometheus for scraping metrics
4975
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.ScrapeProtocol
4976
##
4977
# fallbackScrapeProtocol: ""
4978
4979
## Attaches node metadata to the discovered targets
4980
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.AttachMetadata
4981
##
4982
# attachMetadata:
4983
# node: true
4984
4985
## Configuration for thanosRuler
4986
## ref: https://thanos.io/tip/components/rule.md/
4987
##
4988
thanosRuler:
4989
## Deploy thanosRuler
4990
##
4991
enabled: false
4992
## Annotations for ThanosRuler
4993
##
4994
annotations: {}
4995
## Service account for ThanosRuler to use.
4996
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
4997
##
4998
serviceAccount:
4999
create: true
5000
name: ""
5001
annotations: {}
5002
## Configure pod disruption budgets for ThanosRuler
5003
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
5004
##
5005
podDisruptionBudget:
5006
enabled: false
5007
minAvailable: 1
5008
# maxUnavailable: ""
5009
unhealthyPodEvictionPolicy: AlwaysAllow
5010
ingress:
5011
enabled: false
5012
ingressClassName: ""
5013
annotations: {}
5014
labels: {}
5015
## Hosts must be provided if Ingress is enabled.
5016
##
5017
hosts: []
5018
# - thanosruler.domain.com
5019
5020
## Paths to use for ingress rules - one path should match the thanosruler.routePrefix
5021
##
5022
paths: []
5023
# - /
5024
5025
## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched)
5026
## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types
5027
# pathType: ImplementationSpecific
5028
5029
## TLS configuration for ThanosRuler Ingress
5030
## Secret must be manually created in the namespace
5031
##
5032
tls: []
5033
# - secretName: thanosruler-general-tls
5034
# hosts:
5035
# - thanosruler.example.com
5036
# -- BETA: Configure the gateway routes for the chart here.
5037
# More routes can be added by adding a dictionary key like the 'main' route.
5038
# Be aware that this is an early beta of this feature,
5039
# kube-prometheus-stack does not guarantee this works and is subject to change.
5040
# Being BETA this can/will change in the future without notice, do not use unless you want to take that risk
5041
# [[ref]](https://gateway-api.sigs.k8s.io/reference/api-spec/main/spec/#gatewaynetworkingk8siov1alpha2)
5042
route:
5043
main:
5044
# -- Enables or disables the route
5045
enabled: false
5046
# -- Set the route apiVersion, e.g. gateway.networking.k8s.io/v1 or gateway.networking.k8s.io/v1alpha2
5047
apiVersion: gateway.networking.k8s.io/v1
5048
# -- Set the route kind
5049
# Valid options are GRPCRoute, HTTPRoute, TCPRoute, TLSRoute, UDPRoute
5050
kind: HTTPRoute
5051
annotations: {}
5052
labels: {}
5053
hostnames: []
5054
# - my-filter.example.com
5055
parentRefs: []
5056
# - name: acme-gw
5057
5058
# -- create http route for redirect (https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/#http-to-https-redirects)
5059
## Take care that you only enable this on the http listener of the gateway to avoid an infinite redirect.
5060
## matches, filters and additionalRules will be ignored if this is set to true. Be are
5061
httpsRedirect: false
5062
matches:
5063
- path:
5064
type: PathPrefix
5065
value: /
5066
## Filters define the filters that are applied to requests that match this rule.
5067
filters: []
5068
## Timeouts for the generated HTTPRoute backend rule.
5069
## Requires Gateway API CRDs and a controller that support HTTPRoute timeouts.
5070
timeouts: {}
5071
# request: 120s
5072
# backendRequest: 60s
5073
5074
## Session persistence configuration for the route rule.
5075
sessionPersistence: {}
5076
# sessionName: route
5077
# type: Cookie
5078
# absoluteTimeout: 12h
5079
# cookieConfig:
5080
# lifetimeType: Permanent
5081
5082
## Additional custom rules that can be added to the route
5083
additionalRules: []
5084
## Configuration for ThanosRuler service
5085
##
5086
service:
5087
enabled: true
5088
annotations: {}
5089
labels: {}
5090
clusterIP: ""
5091
ipDualStack:
5092
enabled: false
5093
ipFamilies: ["IPv6", "IPv4"]
5094
ipFamilyPolicy: "PreferDualStack"
5095
## Port for ThanosRuler Service to listen on
5096
##
5097
port: 10902
5098
## To be used with a proxy extraContainer port
5099
##
5100
targetPort: 10902
5101
## Port to expose on each node
5102
## Only used if service.type is 'NodePort'
5103
##
5104
nodePort: 30905
5105
## List of IP addresses at which the Prometheus server service is available
5106
## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
5107
##
5108
5109
## Additional ports to open for ThanosRuler service
5110
additionalPorts: []
5111
externalIPs: []
5112
loadBalancerIP: ""
5113
loadBalancerSourceRanges: []
5114
## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
5115
##
5116
externalTrafficPolicy: Cluster
5117
## Service type
5118
##
5119
type: ClusterIP
5120
## Configuration for creating a ServiceMonitor for the ThanosRuler service
5121
##
5122
serviceMonitor:
5123
## If true, create a serviceMonitor for thanosRuler
5124
##
5125
selfMonitor: true
5126
## Scrape interval. If not set, the Prometheus default scrape interval is used.
5127
##
5128
interval: ""
5129
## Additional labels
5130
##
5131
additionalLabels: {}
5132
## ScrapeClass to use for this ServiceMonitor, as defined in prometheus.prometheusSpec.scrapeClasses.
5133
## If not set, the default scrape class (if any) is used.
5134
##
5135
scrapeClass: ""
5136
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
5137
##
5138
sampleLimit: 0
5139
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
5140
##
5141
targetLimit: 0
5142
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
5143
##
5144
labelLimit: 0
5145
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
5146
##
5147
labelNameLengthLimit: 0
5148
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
5149
##
5150
labelValueLengthLimit: 0
5151
## proxyUrl: URL of a proxy that should be used for scraping.
5152
##
5153
proxyUrl: ""
5154
## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
5155
scheme: ""
5156
## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
5157
## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#tlsconfig
5158
tlsConfig: {}
5159
bearerTokenFile:
5160
## MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
5161
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
5162
##
5163
metricRelabelings: []
5164
# - action: keep
5165
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
5166
# sourceLabels: [__name__]
5167
5168
## RelabelConfigs to apply to samples before scraping
5169
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#relabelconfig
5170
##
5171
relabelings: []
5172
# - sourceLabels: [__meta_kubernetes_pod_node_name]
5173
# separator: ;
5174
# regex: ^(.*)$
5175
# targetLabel: nodename
5176
# replacement: $1
5177
# action: replace
5178
5179
## Additional Endpoints
5180
##
5181
additionalEndpoints: []
5182
# - port: oauth-metrics
5183
# path: /metrics
5184
## Settings affecting thanosRulerpec
5185
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#thanosrulerspec
5186
##
5187
thanosRulerSpec:
5188
## Standard object's metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata
5189
## Metadata Labels and Annotations gets propagated to the ThanosRuler pods.
5190
##
5191
podMetadata: {}
5192
##
5193
serviceName:
5194
## Image of ThanosRuler
5195
##
5196
image:
5197
registry: cgr.dev
5198
repository: chainguard-private/thanos
5199
tag: 0.42.5-r1
5200
sha: sha256:4ab8fbbde01c6eb09a94d82a25742a3ca8ccf1b264adb9a11b5b76515581a534
5201
## Namespaces to be selected for PrometheusRules discovery.
5202
## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery.
5203
## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#namespaceselector for usage
5204
##
5205
ruleNamespaceSelector: {}
5206
## If true, a nil or {} value for thanosRuler.thanosRulerSpec.ruleSelector will cause the
5207
## prometheus resource to be created with selectors based on values in the helm deployment,
5208
## which will also match the PrometheusRule resources created
5209
##
5210
ruleSelectorNilUsesHelmValues: true
5211
## PrometheusRules to be selected for target discovery.
5212
## If {}, select all PrometheusRules
5213
##
5214
ruleSelector: {}
5215
## Example which select all PrometheusRules resources
5216
## with label "prometheus" with values any of "example-rules" or "example-rules-2"
5217
# ruleSelector:
5218
# matchExpressions:
5219
# - key: prometheus
5220
# operator: In
5221
# values:
5222
# - example-rules
5223
# - example-rules-2
5224
#
5225
## Example which select all PrometheusRules resources with label "role" set to "example-rules"
5226
# ruleSelector:
5227
# matchLabels:
5228
# role: example-rules
5229
5230
## Define Log Format
5231
# Use logfmt (default) or json logging
5232
logFormat: logfmt
5233
## Log level for ThanosRuler to be configured with.
5234
##
5235
logLevel: info
5236
## Size is the expected size of the thanosRuler cluster. The controller will eventually make the size of the
5237
## running cluster equal to the expected size.
5238
replicas: 1
5239
## Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression
5240
## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours).
5241
##
5242
retention: 24h
5243
## Interval between consecutive evaluations.
5244
##
5245
evaluationInterval: ""
5246
## Storage is the definition of how storage will be used by the ThanosRuler instances.
5247
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/platform/storage.md
5248
##
5249
storage: {}
5250
# volumeClaimTemplate:
5251
# spec:
5252
# storageClassName: gluster
5253
# accessModes: ["ReadWriteOnce"]
5254
# resources:
5255
# requests:
5256
# storage: 50Gi
5257
# selector: {}
5258
5259
## AlertmanagerConfig define configuration for connecting to alertmanager.
5260
## Only available with Thanos v0.10.0 and higher. Maps to the alertmanagers.config Thanos Ruler arg.
5261
alertmanagersConfig:
5262
# use existing secret, if configured, alertmanagersConfig.secret will not be used
5263
existingSecret: {}
5264
# name: ""
5265
# key: ""
5266
# will render alertmanagersConfig secret data and configure it to be used by Thanos Ruler custom resource, ignored when alertmanagersConfig.existingSecret is set
5267
# https://thanos.io/tip/components/rule.md/#alertmanager
5268
secret: {}
5269
# alertmanagers:
5270
# - api_version: v2
5271
# http_config:
5272
# basic_auth:
5273
# username: some_user
5274
# password: some_pass
5275
# static_configs:
5276
# - alertmanager.thanos.io
5277
# scheme: http
5278
# timeout: 10s
5279
## DEPRECATED. Define URLs to send alerts to Alertmanager. For Thanos v0.10.0 and higher, alertmanagersConfig should be used instead.
5280
## Note: this field will be ignored if alertmanagersConfig is specified. Maps to the alertmanagers.url Thanos Ruler arg.
5281
# alertmanagersUrl:
5282
5283
## The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name. string false
5284
##
5285
externalPrefix:
5286
## If true, http://{{ template "kube-prometheus-stack.thanosRuler.name" . }}.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.thanosRuler.service.port }}
5287
## will be used as value for externalPrefix
5288
externalPrefixNilUsesHelmValues: true
5289
## The route prefix ThanosRuler registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true,
5290
## but the server serves requests under a different route prefix. For example for use with kubectl proxy.
5291
##
5292
routePrefix: /
5293
## ObjectStorageConfig configures object storage in Thanos
5294
objectStorageConfig:
5295
# use existing secret, if configured, objectStorageConfig.secret will not be used
5296
existingSecret: {}
5297
# name: ""
5298
# key: ""
5299
# will render objectStorageConfig secret data and configure it to be used by Thanos Ruler custom resource, ignored when objectStorageConfig.existingSecret is set
5300
# https://thanos.io/tip/thanos/storage.md/#s3
5301
secret: {}
5302
# type: S3
5303
# config:
5304
# bucket: ""
5305
# endpoint: ""
5306
# region: ""
5307
# access_key: ""
5308
# secret_key: ""
5309
## Labels by name to drop before sending to alertmanager
5310
## Maps to the --alert.label-drop flag of thanos ruler.
5311
alertDropLabels: []
5312
## QueryEndpoints defines Thanos querier endpoints from which to query metrics.
5313
## Maps to the --query flag of thanos ruler.
5314
queryEndpoints: []
5315
## Define configuration for connecting to thanos query instances. If this is defined, the queryEndpoints field will be ignored.
5316
## Maps to the query.config CLI argument. Only available with thanos v0.11.0 and higher.
5317
queryConfig:
5318
# use existing secret, if configured, queryConfig.secret will not be used
5319
existingSecret: {}
5320
# name: ""
5321
# key: ""
5322
# render queryConfig secret data and configure it to be used by Thanos Ruler custom resource, ignored when queryConfig.existingSecret is set
5323
# https://thanos.io/tip/components/rule.md/#query-api
5324
secret: {}
5325
# - http_config:
5326
# basic_auth:
5327
# username: some_user
5328
# password: some_pass
5329
# static_configs:
5330
# - URL
5331
# scheme: http
5332
# timeout: 10s
5333
## Labels configure the external label pairs to ThanosRuler. A default replica
5334
## label `thanos_ruler_replica` will be always added as a label with the value
5335
## of the pod's name and it will be dropped in the alerts.
5336
labels: {}
5337
## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions.
5338
##
5339
paused: false
5340
## Allows setting additional arguments for the ThanosRuler container
5341
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#thanosruler
5342
##
5343
additionalArgs: []
5344
# - name: remote-write.config
5345
# value: |-
5346
# "remote_write":
5347
# - "name": "receiver-0"
5348
# "remote_timeout": "30s"
5349
# "url": "http://thanos-receiver-0.thanos-receiver:8081/api/v1/receive"
5350
5351
## Define which Nodes the Pods are scheduled on.
5352
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
5353
##
5354
nodeSelector:
5355
kubernetes.io/os: linux
5356
## Define resources requests and limits for single Pods.
5357
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
5358
##
5359
resources: {}
5360
# requests:
5361
# memory: 400Mi
5362
5363
## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node.
5364
## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.
5365
## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node.
5366
## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured.
5367
##
5368
podAntiAffinity: "soft"
5369
## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.
5370
## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone
5371
##
5372
podAntiAffinityTopologyKey: kubernetes.io/hostname
5373
## Assign custom affinity rules to the thanosRuler instance
5374
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
5375
##
5376
affinity: {}
5377
# nodeAffinity:
5378
# requiredDuringSchedulingIgnoredDuringExecution:
5379
# nodeSelectorTerms:
5380
# - matchExpressions:
5381
# - key: kubernetes.io/e2e-az-name
5382
# operator: In
5383
# values:
5384
# - e2e-az1
5385
# - e2e-az2
5386
5387
## If specified, the pod's tolerations.
5388
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
5389
##
5390
tolerations: []
5391
# - key: "key"
5392
# operator: "Equal"
5393
# value: "value"
5394
# effect: "NoSchedule"
5395
5396
## If specified, the pod's topology spread constraints.
5397
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
5398
##
5399
topologySpreadConstraints: []
5400
# - maxSkew: 1
5401
# topologyKey: topology.kubernetes.io/zone
5402
# whenUnsatisfiable: DoNotSchedule
5403
# labelSelector:
5404
# matchLabels:
5405
# app: thanos-ruler
5406
5407
## SecurityContext holds pod-level security attributes and common container settings.
5408
## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false
5409
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
5410
##
5411
securityContext:
5412
runAsGroup: 2000
5413
runAsNonRoot: true
5414
runAsUser: 1000
5415
fsGroup: 2000
5416
seccompProfile:
5417
type: RuntimeDefault
5418
## Use the host's user namespace for ThanosRuler pods.
5419
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/user-namespaces/
5420
hostUsers: ~
5421
## ListenLocal makes the ThanosRuler server listen on loopback, so that it does not bind against the Pod IP.
5422
## Note this is only for the ThanosRuler UI, not the gossip communication.
5423
##
5424
listenLocal: false
5425
## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an ThanosRuler pod.
5426
##
5427
containers: []
5428
## Additional environment variables to set on the ThanosRuler container.
5429
## This is rendered through the Prometheus Operator strategic merge patch.
5430
##
5431
extraEnv: []
5432
# - name: EXAMPLE
5433
# value: test
5434
5435
# Additional volumes on the output StatefulSet definition.
5436
volumes: []
5437
# Additional VolumeMounts on the output StatefulSet definition.
5438
volumeMounts: []
5439
## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes
5440
## (permissions, dir tree) on mounted volumes before starting prometheus
5441
initContainers: []
5442
## Priority class assigned to the Pods
5443
##
5444
priorityClassName: ""
5445
## PortName to use for ThanosRuler.
5446
##
5447
portName: "web"
5448
## Scheduler to use for Pod scheduling, defaulting to the Kubernetes default scheduler.
5449
##
5450
schedulerName: ""
5451
## Duration in seconds the pod needs to terminate gracefully.
5452
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
5453
terminationGracePeriodSeconds: ~
5454
## WebTLSConfig defines the TLS parameters for HTTPS
5455
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#thanosrulerwebspec
5456
web: {}
5457
## Pod management policy. Kubernetes default is OrderedReady but prometheus-operator default is Parallel.
5458
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies
5459
podManagementPolicy: ""
5460
## Update strategy for the StatefulSet.
5461
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
5462
updateStrategy: {}
5463
# type: RollingUpdate
5464
# rollingUpdate:
5465
# maxUnavailable: 1
5466
5467
## Version of Thanos Ruler to deploy. Overrides the version derived from the image tag when set.
5468
version: ""
5469
## Image pull policy for the Thanos Ruler container.
5470
imagePullPolicy: ""
5471
## EnableFeatures API enables access to Thanos Ruler disabled features.
5472
enableFeatures: []
5473
## EnableServiceLinks indicates whether information about services should be injected into the
5474
## pod's environment variables. Uses the operator/Kubernetes default when left unset (~).
5475
enableServiceLinks: ~
5476
## Minimum number of seconds for which a newly created pod should be ready without any of its
5477
## containers crashing/restarting for it to be considered available.
5478
minReadySeconds: ~
5479
## Defines the DNS configuration for the pods.
5480
dnsConfig: {}
5481
# nameservers:
5482
# - 1.2.3.4
5483
# searches:
5484
# - ns1.svc.cluster-domain.example
5485
# options:
5486
# - name: ndots
5487
# value: "2"
5488
5489
## Defines the DNS policy for the pods.
5490
dnsPolicy: ""
5491
## Pods' hostAliases configuration
5492
## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
5493
hostAliases: []
5494
# - ip: 10.10.0.100
5495
# hostnames:
5496
# - a1.app.local
5497
5498
## Defines the list of remote write configurations. When not empty, the Thanos Ruler operates in stateless mode.
5499
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.RemoteWriteSpec
5500
remoteWrite: []
5501
## Configures tracing for Thanos Ruler. Maps to the tracing.config CLI argument.
5502
tracingConfig:
5503
# use existing secret, if configured, tracingConfig.secret will not be used
5504
existingSecret: {}
5505
# name: ""
5506
# key: ""
5507
# render tracingConfig secret data and configure it to be used by Thanos Ruler custom resource, ignored when tracingConfig.existingSecret is set
5508
secret: {}
5509
## Path to a tracing configuration file on disk (e.g. mounted through a volume). Takes precedence over tracingConfig.
5510
tracingConfigFile: ""
5511
## Configures alert relabeling for Thanos Ruler. Maps to the alert.relabel-config CLI argument.
5512
alertRelabelConfigs:
5513
# use existing secret, if configured, alertRelabelConfigs.secret will not be used
5514
existingSecret: {}
5515
# name: ""
5516
# key: ""
5517
# render alertRelabelConfigs secret data and configure it to be used by Thanos Ruler custom resource, ignored when alertRelabelConfigs.existingSecret is set
5518
secret: {}
5519
## Path to an alert relabel configuration file on disk. Takes precedence over alertRelabelConfigs.
5520
alertRelabelConfigFile: ""
5521
## Configures the gRPC server TLS for Thanos Ruler.
5522
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#monitoring.coreos.com/v1.TLSConfig
5523
grpcServerTlsConfig: {}
5524
## Path to an object storage configuration file on disk. Takes precedence over objectStorageConfig.
5525
objectStorageConfigFile: ""
5526
## Number of concurrent rule evaluations.
5527
ruleConcurrentEval: ~
5528
## Maximum time to tolerate outage for restoring "for" state of alert.
5529
ruleOutageTolerance: ""
5530
## Minimum duration between alert and restored "for" state. Maintained only for alerts with a configured "for"
5531
## time greater than the grace period.
5532
ruleGracePeriod: ""
5533
## The default rule group's query offset duration to shift the evaluation time of rules backwards.
5534
## ref: https://github.com/prometheus-community/helm-charts/issues/5843
5535
ruleQueryOffset: ""
5536
## Minimum amount of time to wait before resending an alert to Alertmanager.
5537
resendDelay: ""
5538
## EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric.
5539
enforcedNamespaceLabel: ""
5540
## List of references to PrometheusRule objects to be excluded from enforcement (requires enforcedNamespaceLabel).
5541
## Can be a list of objects, or a string that is passed through tpl.
5542
excludedFromEnforcement: []
5543
## Additional configuration which is not covered by the properties above. (passed through tpl)
5544
additionalConfig: {}
5545
## Additional configuration which is not covered by the properties above.
5546
## Useful, if you need advanced templating
5547
additionalConfigString: ""
5548
## ExtraSecret can be used to store various data in an extra secret
5549
## (use it for example to store hashed basic auth credentials)
5550
extraSecret:
5551
## if not set, name will be auto generated
5552
# name: ""
5553
annotations: {}
5554
data: {}
5555
# auth: |
5556
# foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0
5557
# someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c.
5558
## Setting to true produces cleaner resource names, but requires a data migration because the name of the persistent volume changes. Therefore this should only be set once on initial installation.
5559
##
5560
cleanPrometheusOperatorObjectNames: false
5561
## Extra manifests to deploy. Can be of type dict or list.
5562
## If dict, keys are ignored and only values are used.
5563
## Items contained within extraObjects can be defined as dict or string and are passed through tpl.
5564
extraManifests: null
5565
# - apiVersion: v1
5566
# kind: ConfigMap
5567
# metadata:
5568
# labels:
5569
# name: prometheus-extra
5570
# data:
5571
# extra-data: "value"
5572
#
5573
# can also be defined as a string, useful for templating field names
5574
# - |
5575
# apiVersion: v1
5576
# kind: Secret
5577
# type: Opaque
5578
# metadata:
5579
# name: super-secret
5580
# labels:
5581
# {{- range $key, $value := .Values.commonLabels }}
5582
# {{ $key }}: {{ $value }}
5583
# {{- end }}
5584
# data:
5585
# plaintext: Zm9vYmFy
5586
# templated: '{{ print "foobar" | upper | b64enc }}'
5587

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.