1# Default values for victoria-metrics.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
5 # -- Image pull secrets, that can be shared across multiple helm charts
8 # -- Image registry, that can be shared across multiple helm charts
10 # -- Openshift security context compatibility configuration
13 adaptSecurityContext: "auto"
14 # -- Automount OpenShift service signing CA into the pod
15 automountServiceSigningCA: "auto"
17 # -- K8s cluster domain suffix, uses for building storage pods' FQDN. Details are [here](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)
18 dnsDomain: cluster.local.
19 # -- Labels added to all resources
21 # -- Annotations added to all resources
24 # -- Enables Role/RoleBinding creation
26 # -- If true and `rbac.enabled`, will deploy a Role/RoleBinding instead of a ClusterRole/ClusterRoleBinding
28 # -- Role/RoleBinding labels
30 # -- Role/RoleBinding annotations
32# -- Override chart name
37 # -- Create service account.
39 # -- The name of the service account to use.
40 # If not set and create is true, a name is generated using the fullname template
42 # -- ServiceAccount labels
44 # -- ServiceAccount annotations
46 # -- Mount API token to pod directly
48# -- See `kubectl explain poddisruptionbudget.spec` for more. Details are [here](https://kubernetes.io/docs/tasks/run-application/configure-pdb/)
51 # -- min number or percentage of pods that can be unavailable
53 # -- max number or percentage of pods that can be unavailable
55 # -- Defines criteria when unhealthy pods should be considered for eviction
56 unhealthyPodEvictionPolicy:
58# -- See `kubectl explain networkpolicy.spec` for more. Details are [here](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
65 # -- Extra labels for NetworkPolicy
67 # -- Extra annotations for NetworkPolicy
70 # -- Enable deployment of server component. Deployed as StatefulSet
72 # -- Override default `app` label name
78 repository: chainguard-private/victoria-metrics
80 tag: 1.151.0@sha256:f032404c57abbb010ffe32ab5494aa18f2abc377cb6fec75f543584ed00e5af4
81 # Variant of the image tag to use.
84 # -- Image pull policy
85 pullPolicy: IfNotPresent
86 # -- Override default container command. Use when the VictoriaMetrics binary is available at a custom path
88 # -- Image pull secrets
90 # -- Specify pod lifecycle
92 # -- Number of victoriametrics single replicas
94 # -- Name of Priority Class
96 # -- Name of the [RuntimeClass](https://kubernetes.io/docs/concepts/containers/runtime-class/) used to run the pod, e.g. "gvisor"
98 # -- Overrides the full name of server component
100 # -- Data retention period. Possible units character: h(ours), d(ays), w(eeks), y(ears), if no unit character specified - month. The minimum retention period is 24h. See these [docs](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/#retention)
102 # -- HTTP listen address configuration. See https://docs.victoriametrics.com/helm/victoria-metrics-single/#http-listen-address for details.
113 tlsAutocertCacheDir: ""
116 # -- Extra command line arguments for container of component
121 # Enable IPv6 support. Useful for running in IPv6-only Kubernetes clusters
123 # Additional hostPath mounts
124 extraHostPathMounts: []
126 # mountPath: /etc/kubernetes/certs
128 # hostPath: /etc/kubernetes/certs
131 # Extra Volumes for the pod
137 # -- Extra Volume Mounts for the container
138 extraVolumeMounts: []
140 # mountPath: /example
142 # -- Extra containers to run in a pod with VM single
144 #- name: config-reloader
145 # image: reloader-image
147 # -- Init containers for VM single pod
150 # image: victoriametrics/vmrestore:latest
152 # - mountPath: /storage
153 # name: vmstorage-volume
154 # - mountPath: /etc/vm/creds
155 # name: secret-remote-storage-keys
158 # - -storageDataPath=/storage
159 # - -src=s3://your_bucket/folder/latest
160 # - -credsFilePath=/etc/vm/creds/credentials
162 # -- Node tolerations for server scheduling to nodes with taints. Details are [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/)
165 # operator: "Equal|Exists"
167 # effect: "NoSchedule|PreferNoSchedule"
169 # -- Pod's node selector. Details are [here](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector)
174 # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables) for more details
176 # -- Specify alternative source for env variables
179 # name: special-config
181 # -- Container workdir
182 containerWorkingDir: ""
183 # -- Use an alternate scheduler, e.g. "stork". Check [here](https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/) for more details
187 # -- Create/use Persistent Volume Claim for server component. Empty dir if false
189 # -- Override Persistent Volume Claim name
191 # -- Array of access modes. Must match those of existing PV or dynamic provisioner. Details are [here](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)
194 # -- VolumeClassAttribute to user for persistent volume
195 volumeAttributesClassName:
196 # -- Persistent volume annotations
200 # -- StorageClass to use for persistent volume. Requires server.persistentVolume.enabled: true. If defined, PVC created automatically
202 # -- Existing Claim name. If defined, PVC must be created manually before volume will be bound
204 # -- Bind Persistent Volume by labels. Must match all labels of targeted PV.
206 # -- Mount path. Server data Persistent Volume mount root path.
210 # -- Size of the volume. Should be calculated based on the metrics you send and retention policy you set.
212 # -- Sts/Deploy additional labels
214 # -- Pod's additional labels
216 # -- Pod's annotations
218 # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
227 # -- Readiness & Liveness probes
229 # -- Indicates whether the Container is ready to service requests. If the readiness probe fails, the endpoints controller removes the Pod's IP address from the endpoints of all Services that match the Pod. The default state of readiness before the initial delay is Failure. If a Container does not provide a readiness probe, the default state is Success.
232 initialDelaySeconds: 5
236 # -- Indicates whether the Container is running. If the liveness probe fails, the kubelet kills the Container, and the Container is subjected to its restart policy. If a Container does not provide a liveness probe, the default state is Success.
239 initialDelaySeconds: 30
243 # -- Indicates whether the Container is done with potentially costly initialization. If set it is executed first. If it fails Container is restarted. If it succeeds liveness and readiness probes takes over.
245 #failureThreshold: 30
249 # -- Security context to be added to server pods
252 # -- Pod's security context. Details are [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
256 # -- Enable deployment of ingress for server component
258 # -- Ingress annotations
260 # kubernetes.io/ingress.class: nginx
261 # kubernetes.io/tls-acme: 'true'
263 # -- Ingress extra labels
265 # -- Array of host objects
267 - name: vmsingle.local
271 # -- Array of TLS objects
273 # - secretName: vmselect-ingress-tls
276 # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
277 # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
278 # ingressClassName: nginx
281 # -- Enable deployment of HTTPRoute for single component
283 # -- HTTPRoute annotations
285 # -- HTTPRoute extra labels
287 # -- HTTPGateway objects refs
289 # -- Array of hostnames
291 # -- Extra rules to prepend to route. This is useful when working with annotation based services.
293 # -- Filters for a default rule in HTTPRoute
295 # -- Matches for a default rule in HTTPRoute
299 value: '{{ dig "extraArgs" "http.pathPrefix" "/" .Values.server }}'
301 # -- Enable automatic creation of backup via vmbackupmanager. vmbackupmanager is part of Enterprise packages
304 # -- VMBackupManager image registry
306 # -- VMBackupManager image repository
307 repository: victoriametrics/vmbackupmanager
308 # -- VMBackupManager image tag
310 # Variant of the image tag to use.
313 # -- Disable hourly backups
315 # -- Disable daily backups
317 # -- Disable weekly backups
319 # -- Disable monthly backups
320 disableMonthly: false
321 # -- Backup destination at S3, GCS or local filesystem. Release name will be included to path!
323 # -- Backups' retention settings
325 # -- Keep last N hourly backups. 0 means delete all existing hourly backups. Specify -1 to turn off
327 # -- Keep last N daily backups. 0 means delete all existing daily backups. Specify -1 to turn off
329 # -- Keep last N weekly backups. 0 means delete all existing weekly backups. Specify -1 to turn off
331 # -- Keep last N monthly backups. 0 means delete all existing monthly backups. Specify -1 to turn off
333 # -- Extra command line arguments for container of component
338 # Extra Volume Mounts for the container
339 extraVolumeMounts: []
341 # mountPath: /example
342 # -- Allows to enable restore options for pod.
343 # Read more [here](https://docs.victoriametrics.com/victoriametrics/vmbackupmanager/#restore-commands)
347 # -- Resource object. Details are [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)
349 # -- Additional environment variables (ex.: secret tokens, flags). Check [here](https://docs.victoriametrics.com/victoriametrics/#environment-variables)
351 # -- Readiness & Liveness probes
353 # -- VMBackupManager readiness probe
357 initialDelaySeconds: 5
361 # -- VMBackupManager liveness probe
365 initialDelaySeconds: 30
369 # -- VMBackupManager startup probe
374 # -- Service traffic distribution. Details are [here](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution)
375 trafficDistribution: ""
376 # -- Service annotations
380 # -- Service ClusterIP
382 # -- Service external IPs. Details are [here](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips)
384 # -- Service load balancer IP
386 # -- Load balancer source range
387 loadBalancerSourceRanges: []
394 # -- Service external traffic policy. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
395 externalTrafficPolicy: ""
396 # -- Health check node port for a service. Check [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) for details
397 healthCheckNodePort: ""
398 # -- Service IP family policy. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
400 # -- List of service IP families. Check [here](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) for details.
402 # -- VictoriaMetrics mode: deployment, statefulSet
404 # -- [K8s Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) specific variables
408 # Must be "Recreate" when we have a persistent volume
410 # -- [K8s StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) specific variables
413 # -- Deploy order policy for StatefulSet pods
414 podManagementPolicy: OrderedReady
415 # -- StatefulSet update strategy. Check [here](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies) for details.
417 # type: RollingUpdate
418 # -- Pod's termination grace period in seconds
419 terminationGracePeriodSeconds: 60
421 # -- Enable deployment of Service Monitor for server component. This is Prometheus operator object
423 # -- Service Monitor labels
425 # -- Service Monitor annotations
427 # -- Service Monitor path
429 # -- Basic auth params for Service Monitor
431 # -- Commented. Prometheus scrape interval for server component
434 # -- Commented. Prometheus pre-scrape timeout for server component
436 # -- Commented. HTTP scheme to use for scraping.
438 # -- Commented. TLS configuration to use when scraping the endpoint
440 # insecureSkipVerify: true
441 # -- Service Monitor relabelings
443 # -- Service Monitor metricRelabelings
444 metricRelabelings: []
445 # -- Service Monitor port. Uses primary http item name by default
447 # -- Service Monitor target port. Overrides port when set
449 # -- Global relabel configuration
453 # -- Use existing configmap if specified
454 # otherwise .config values will be used. Relabel config **should** reside under `relabel.yml` key
456 # Scrape configuration for victoriametrics
458 # -- If true scrapes targets, creates config map or use specified one with scrape targets
460 # -- Use existing configmap if specified
461 # otherwise .config values will be used. Scrape config **should** reside under `scrape.yml` key
469 # Scrape rule for scrape victoriametrics
470 - job_name: victoriametrics
472 - targets: ["localhost:8428"]
473 # COPY from Prometheus helm chart https://github.com/helm/charts/blob/master/stable/prometheus/values.yaml
475 # Scrape config for API servers.
477 # Kubernetes exposes API servers as endpoints to the default/kubernetes
478 # service so this uses `endpoints` role and uses relabelling to only keep
479 # the endpoints associated with the default/kubernetes service using the
480 # default named port `https`. This works for single API server deployments as
481 # well as HA API server deployments.
482 - job_name: "kubernetes-apiservers"
483 kubernetes_sd_configs:
485 # Default to scraping over https. If required, just disable this or change to
488 # This TLS & bearer token file config is used to connect to the actual scrape
489 # endpoints for cluster components. This is separate to discovery auth
490 # configuration because discovery & scraping are two separate concerns in
491 # Prometheus. The discovery auth config is automatic if Prometheus runs inside
492 # the cluster. Otherwise, more config options have to be provided within the
493 # <kubernetes_sd_config>.
495 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
496 # If your node certificates are self-signed or use a different CA to the
497 # master CA, then you need to disable certificate verification. Note that
498 # certificate verification is an integral part of a secure infrastructure
499 # so this should only be disabled in a controlled environment. You can
500 # enable certificate verification by commenting the line below.
502 insecure_skip_verify: true
503 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
504 # Keep only the default/kubernetes service endpoints for the https port. This
505 # will add targets for each API server which Kubernetes adds an endpoint to
506 # the default/kubernetes service.
508 - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
510 regex: default;kubernetes;https
511 # Scrape rule using kubernetes service discovery for nodes
512 - job_name: "kubernetes-nodes"
513 # Default to scraping over https. If required, just disable this or change to
516 # This TLS & bearer token file config is used to connect to the actual scrape
517 # endpoints for cluster components. This is separate to discovery auth
518 # configuration because discovery & scraping are two separate concerns in
519 # Prometheus. The discovery auth config is automatic if Prometheus runs inside
520 # the cluster. Otherwise, more config options have to be provided within the
521 # <kubernetes_sd_config>.
523 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
524 # If your node certificates are self-signed or use a different CA to the
525 # master CA, then you need to disable certificate verification. Note that
526 # certificate verification is an integral part of a secure infrastructure
527 # so this should only be disabled in a controlled environment. You can
528 # enable certificate verification by commenting the line below.
530 insecure_skip_verify: true
531 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
532 kubernetes_sd_configs:
536 regex: __meta_kubernetes_node_label_(.+)
537 # Scrape rule using kubernetes service discovery for cadvisor
538 - job_name: "kubernetes-nodes-cadvisor"
539 # Default to scraping over https. If required, just disable this or change to
542 # This TLS & bearer token file config is used to connect to the actual scrape
543 # endpoints for cluster components. This is separate to discovery auth
544 # configuration because discovery & scraping are two separate concerns in
545 # Prometheus. The discovery auth config is automatic if Prometheus runs inside
546 # the cluster. Otherwise, more config options have to be provided within the
547 # <kubernetes_sd_config>.
549 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
550 # If your node certificates are self-signed or use a different CA to the
551 # master CA, then you need to disable certificate verification. Note that
552 # certificate verification is an integral part of a secure infrastructure
553 # so this should only be disabled in a controlled environment. You can
554 # enable certificate verification by commenting the line below.
556 insecure_skip_verify: true
557 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
558 kubernetes_sd_configs:
560 metrics_path: /metrics/cadvisor
563 regex: __meta_kubernetes_node_label_(.+)
564 - source_labels: [__metrics_path__]
565 target_label: metrics_path
566 # ignore timestamps of cadvisor's metrics by default
567 # more info here https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4697#issuecomment-1656540535
568 honor_timestamps: false
569 # Scrape config for service endpoints.
571 # The relabeling allows the actual service scrape endpoint to be configured
572 # via the following annotations:
574 # * `prometheus.io/scrape`: Only scrape services that have a value of `true`
575 # * `prometheus.io/scheme`: If the metrics endpoint is secured then you will need
576 # to set this to `https` & most likely set the `tls_config` of the scrape config.
577 # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
578 # * `prometheus.io/port`: If the metrics are exposed on a different port to the
579 # service then set this appropriately.
581 # Scrape rule using kubernetes service discovery for endpoints
582 - job_name: "kubernetes-service-endpoints"
583 kubernetes_sd_configs:
587 source_labels: [__meta_kubernetes_pod_container_init]
589 - action: keep_if_equal
590 source_labels: [__meta_kubernetes_service_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number]
591 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
594 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
596 target_label: __scheme__
598 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
600 target_label: __metrics_path__
602 - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
604 target_label: __address__
605 regex: ([^:]+)(?::\d+)?;(\d+)
608 regex: __meta_kubernetes_service_label_(.+)
609 - source_labels: [__meta_kubernetes_namespace]
611 target_label: namespace
612 - source_labels: [__meta_kubernetes_service_name]
614 target_label: service
615 - source_labels: [__meta_kubernetes_pod_node_name]
618 # Scrape config for slow service endpoints; same as above, but with a larger
619 # timeout and a larger interval
621 # The relabeling allows the actual service scrape endpoint to be configured
622 # via the following annotations:
624 # * `prometheus.io/scrape-slow`: Only scrape services that have a value of `true`
625 # * `prometheus.io/scheme`: If the metrics endpoint is secured then you will need
626 # to set this to `https` & most likely set the `tls_config` of the scrape config.
627 # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
628 # * `prometheus.io/port`: If the metrics are exposed on a different port to the
629 # service then set this appropriately.
631 - job_name: "kubernetes-service-endpoints-slow"
634 kubernetes_sd_configs:
638 source_labels: [__meta_kubernetes_pod_container_init]
640 - action: keep_if_equal
641 source_labels: [__meta_kubernetes_service_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number]
642 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape_slow]
645 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
647 target_label: __scheme__
649 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
651 target_label: __metrics_path__
653 - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
655 target_label: __address__
656 regex: ([^:]+)(?::\d+)?;(\d+)
659 regex: __meta_kubernetes_service_label_(.+)
660 - source_labels: [__meta_kubernetes_namespace]
662 target_label: namespace
663 - source_labels: [__meta_kubernetes_service_name]
665 target_label: service
666 - source_labels: [__meta_kubernetes_pod_node_name]
669 # Example scrape config for probing services via the Blackbox Exporter.
671 # The relabeling allows the actual service scrape endpoint to be configured
672 # via the following annotations:
674 # * `prometheus.io/probe`: Only probe services that have a value of `true`
676 - job_name: "kubernetes-services"
680 kubernetes_sd_configs:
683 - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
686 - source_labels: [__address__]
687 target_label: __param_target
688 - target_label: __address__
689 replacement: blackbox
690 - source_labels: [__param_target]
691 target_label: instance
693 regex: __meta_kubernetes_service_label_(.+)
694 - source_labels: [__meta_kubernetes_namespace]
695 target_label: namespace
696 - source_labels: [__meta_kubernetes_service_name]
697 target_label: service
698 # Example scrape config for pods
700 # The relabeling allows the actual pod scrape endpoint to be configured via the
701 # following annotations:
703 # * `prometheus.io/scrape`: Only scrape pods that have a value of `true`
704 # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
705 # * `prometheus.io/port`: Scrape the pod on the indicated port instead of the default of `9102`.
707 - job_name: "kubernetes-pods"
708 kubernetes_sd_configs:
712 source_labels: [__meta_kubernetes_pod_container_init]
714 - action: keep_if_equal
715 source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number]
716 - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
719 - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
721 target_label: __metrics_path__
723 - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
725 regex: ([^:]+)(?::\d+)?;(\d+)
727 target_label: __address__
729 regex: __meta_kubernetes_pod_label_(.+)
730 - source_labels: [__meta_kubernetes_namespace]
732 target_label: namespace
733 - source_labels: [__meta_kubernetes_pod_name]
737 # -- Extra scrape configs that will be appended to `server.scrape.config`
738 extraScrapeConfigs: []
739 # - job_name: 'prometheus-blackbox-exporter'
740 # metrics_path: /probe
745 # - https://example.com
747 # - source_labels: [__address__]
748 # target_label: __param_target
749 # - source_labels: [__param_target]
750 # target_label: instance
751 # - target_label: __address__
752 # replacement: prometheus-blackbox-exporter:9115
753# -- Add extra specs dynamically to this chart
755# -- Enterprise license key configuration for VictoriaMetrics enterprise.
756# Required only for VictoriaMetrics enterprise. Check docs [here](https://docs.victoriametrics.com/victoriametrics/enterprise/),
757# for more information, visit [site](https://victoriametrics.com/products/enterprise/).
758# Request a trial license [here](https://victoriametrics.com/products/enterprise/trial/)
759# Supported starting from VictoriaMetrics v1.94.0
763 # -- Use existing secret with license key
765 # -- Existing secret name
767 # -- Key in secret with license key