Victoria-metrics-operator#

Victoria-metrics-operator - это инструмент для управления VictoriaMetrics в DropApp, автоматизирующий развертывание, настройку и эксплуатацию компонентов мониторинга через пользовательские ресурсы (Custom Resources).

Основные задачи и возможности
  • Автоматическое управление компонентами VictoriaMetrics:

    Поддерживает автоматическое развертывание и настройку таких компонентов, как VMAgent, VMAlertmanager, VMAlert, VMAuth и VMCluster.

  • Поддержка кластерного режима VictoriaMetrics (VMCluster):

    Позволяет использовать высокодоступную архитектуру с репликацией метрик, горизонтальным масштабированием и автоматическим восстановлением узлов.

  • Высокая доступность (HA):

    Victoria-metrics-operator обеспечивает отказоустойчивость для всех компонентов стека мониторинга, включая автоматический failover и балансировку нагрузки.

  • Интеграция с Kubernetes API:

    Использует привычные CRD (Custom Resource Definitions), что позволяет управлять VictoriaMetrics через стандартные Kubernetes-манифесты.

Примечание

Victoria-metrics-operator устанавливается по умолчанию с компонентом Monitoring.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем victoria-metrics-operator и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

image - определить настройки контейнерного образа victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

image.registry

Реестр контейнерного образа оператора

""

image.repository

Репозиторий контейнерного образа оператора

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-victoriametrics-operator/operator'

image.tag

Тег контейнерного образа оператора, переопределяющий Chart.AppVersion

v0.68.1

image.variant

Вариант контейнерного образа, например scratch

""

image.pullPolicy

Политика загрузки контейнерного образа оператора

IfNotPresent

configReloader - определить настройки образа config-reloader#

Параметр

Описание

Значение по умолчанию

configReloader.image.registry

Реестр контейнерного образа config-reloader

'{{ .Values.global.image.registry }}'

configReloader.image.repository

Репозиторий контейнерного образа config-reloader

'{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-victoriametrics-operator/config-reloader'

configReloader.image.tag

Тег контейнерного образа config-reloader

v0.68.1

crds - определить настройки создания и обновления CRD#

Параметр

Описание

Значение по умолчанию

crds.enabled

Управляет созданием CRD; отключение корректно работает только вместе с crds.plain: false из-за ограничений helm dependency conditions

true

crds.plain

Определяет способ создания CRD: immutable plain CRD или templated CRD

false

crds.annotations

Дополнительные аннотации для CRD при использовании templated CRD

{}

crds.cleanup.enabled

Удалять vm-ресурсы в namespace релиза при uninstall chart

false

crds.cleanup.image.repository

Репозиторий образа Job для очистки CRD-ресурсов

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-kubernetes/kubectl'

crds.cleanup.image.tag

Тег образа Job очистки, по умолчанию соответствующий версии Kubernetes API

v1.29.15

crds.cleanup.image.pullPolicy

Политика загрузки образа Job очистки

IfNotPresent

crds.cleanup.resources.limits.cpu

CPU limit для Job очистки

"500m"

crds.cleanup.resources.limits.memory

Memory limit для Job очистки

"256Mi"

crds.cleanup.resources.requests.cpu

CPU request для Job очистки

"100m"

crds.cleanup.resources.requests.memory

Memory request для Job очистки

"56Mi"

crds.upgrade.enabled

Включает Job обновления CRD

false

crds.upgrade.forceConflicts

Добавляет аргумент --force-conflics в kubectl при обновлении CRD

false

crds.upgrade.busybox.image.repository

Репозиторий образа busybox для Job обновления CRD

busybox

crds.upgrade.busybox.image.tag

Тег образа busybox для Job обновления CRD

latest

crds.upgrade.busybox.image.pullPolicy

Политика загрузки образа busybox для Job обновления CRD

IfNotPresent

crds.upgrade.kubectl.image.repository

Репозиторий образа kubectl для Job обновления CRD

rancher/kubectl

crds.upgrade.kubectl.image.tag

Тег образа kubectl для Job обновления CRD

""

crds.upgrade.kubectl.image.pullPolicy

Политика загрузки образа kubectl для Job обновления CRD

IfNotPresent

crds.upgrade.env

Дополнительные переменные окружения для Job обновления CRD

[]

crds.upgrade.resources

Ресурсные requests и limits для Job обновления CRD. Пример конфигурации:

limits:
cpu: 120m
memory: 320Mi
requests:
cpu: 80m
memory: 120Mi

{}

crds.upgrade.extraVolumes

Дополнительные volumes для Job обновления CRD

[]

crds.upgrade.extraVolumeMounts

Дополнительные volumeMounts для Job обновления CRD

[]

crds.upgrade.nodeSelector

Node selector для pod Job обновления CRD

{}

crds.upgrade.affinity

Affinity-правила для pod Job обновления CRD. Пример конфигурации:

nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2

{}

crds.upgrade.tolerations

Список tolerations для Job обновления CRD. Пример конфигурации:

- key: «key»
operator: «Equal»
value: «value»
effect: «NoSchedule»

[]

crds.upgrade.topologySpreadConstraints

Ограничения распределения pod Job обновления CRD по топологии кластера. Пример конфигурации:

- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: alertmanager

[]

crds.upgrade.labels

Дополнительные метки для Job обновления CRD

{}

crds.upgrade.annotations

Дополнительные аннотации для Job обновления CRD

{}

crds.upgrade.podLabels

Дополнительные метки для pod Job обновления CRD

{}

crds.upgrade.podAnnotations

Дополнительные аннотации для pod Job обновления CRD

{}

crds.upgrade.serviceAccount.create

Создавать отдельный ServiceAccount для Job обновления CRD

true

crds.upgrade.serviceAccount.name

Имя ServiceAccount для Job обновления CRD; пустое значение означает автогенерацию имени

""

crds.upgrade.serviceAccount.annotations

Аннотации для ServiceAccount Job обновления CRD

{}

crds.upgrade.serviceAccount.labels

Метки для ServiceAccount Job обновления CRD

{}

crds.upgrade.serviceAccount.automountServiceAccountToken

Автоматически монтировать токен ServiceAccount в Job обновления CRD

true

crds.upgrade.securityContext.allowPrivilegeEscalation

Разрешать повышение привилегий контейнеру Job обновления CRD

false

crds.upgrade.securityContext.readOnlyRootFilesystem

Монтировать корневую файловую систему контейнера Job обновления CRD только для чтения

true

crds.upgrade.securityContext.capabilities.drop

Список Linux capabilities, удаляемых у контейнера Job обновления CRD

- ALL

crds.upgrade.podSecurityContext.enabled

Включает применение podSecurityContext для Job обновления CRD

true

crds.upgrade.podSecurityContext.fsGroup

FSGroup для pod Job обновления CRD

65534

crds.upgrade.podSecurityContext.runAsGroup

GID группы, от имени которой запускается pod Job обновления CRD

65534

crds.upgrade.podSecurityContext.runAsNonRoot

Запускать pod Job обновления CRD от непривилегированного пользователя

true

crds.upgrade.podSecurityContext.runAsUser

UID пользователя pod Job обновления CRD

65534

crds.upgrade.podSecurityContext.seccompProfile.type

Тип seccomp-профиля для pod Job обновления CRD

RuntimeDefault

replicaCount - определить количество реплик victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

replicaCount

Количество реплик Deployment оператора

1

imagePullSecrets - определить секреты для загрузки образов из приватных реестров#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Список секретов Kubernetes, используемых для pull контейнерных образов

[]

nameOverride - определить сокращенное переопределение имени ресурсов#

Параметр

Описание

Значение по умолчанию

nameOverride

Переопределяет базовое имя ресурсов chart

""

fullnameOverride - определить полное переопределение имени ресурсов#

Параметр

Описание

Значение по умолчанию

fullnameOverride

Полностью переопределяет итоговое имя ресурсов серверного компонента

""

logLevel - определить уровень логирования victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

logLevel

Уровень логирования оператора; поддерживаются значения info и error

"info"

allowedMetricsEndpoints - определить список разрешенных metrics endpoint#

Параметр

Описание

Значение по умолчанию

allowedMetricsEndpoints

Список HTTP endpoint, с которых разрешена отдача метрик

- /metrics
- /metrics/resources

rbac - определить настройки RBAC-ресурсов victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

rbac.create

Создавать RBAC-ресурсы для работы оператора

true

rbac.aggregatedClusterRoles.enabled

Создавать aggregated ClusterRole для read-only и admin прав на CRD

true

rbac.aggregatedClusterRoles.labels.view.rbac.authorization.k8s.io/aggregate-to-view

Label для включения ClusterRole в aggregated role view

"true"

rbac.aggregatedClusterRoles.labels.admin.rbac.authorization.k8s.io/aggregate-to-admin

Label для включения ClusterRole в aggregated role admin

"true"

extraLabels - определить дополнительные метки для всех ресурсов#

Параметр

Описание

Значение по умолчанию

extraLabels

Дополнительные метки, добавляемые ко всем ресурсам chart

{}

podLabels - определить дополнительные метки только для pod#

Параметр

Описание

Значение по умолчанию

podLabels

Дополнительные метки, добавляемые только на pod оператора

{}

annotations - определить дополнительные аннотации для всех ресурсов#

Параметр

Описание

Значение по умолчанию

annotations

Дополнительные аннотации, добавляемые ко всем ресурсам chart

{}

podSecurityContext - определить pod-level securityContext для оператора#

Параметр

Описание

Значение по умолчанию

podSecurityContext.enabled

Включает применение podSecurityContext для pod оператора

true

podSecurityContext.fsGroup

FSGroup для pod оператора

2000

podSecurityContext.runAsNonRoot

Запускать pod оператора от непривилегированного пользователя

true

podSecurityContext.runAsUser

UID пользователя pod оператора

1000

securityContext - определить container-level securityContext для оператора#

Параметр

Описание

Значение по умолчанию

securityContext.enabled

Включает применение securityContext для контейнера оператора

true

securityContext.allowPrivilegeEscalation

Разрешать повышение привилегий в контейнере оператора

false

securityContext.capabilities.drop

Список Linux capabilities, удаляемых у контейнера оператора

- ALL

securityContext.readOnlyRootFilesystem

Монтировать корневую файловую систему контейнера оператора только для чтения

true

operator - определить функциональные настройки victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

operator.disable_prometheus_converter

Отключает конвертацию объектов prometheus-operator в объекты VictoriaMetrics

false

operator.prometheus_converter_add_argocd_ignore_annotations

Добавляет compare-options и sync-options аннотации ArgoCD для конвертированных prometheus-объектов

false

operator.enable_converter_ownership

Включает ownerReference для конвертированных объектов, чтобы victoria-metrics-объекты удалялись вместе с исходными prometheus-объектами

false

operator.useCustomConfigReloader

Использовать встроенный кастомный config-reloader для более предсказуемой синхронизации конфигурации

true

watchNamespaces - определить список namespace для наблюдения оператором#

Параметр

Описание

Значение по умолчанию

watchNamespaces

Список namespace, за которыми следит оператор; пустой список означает все namespace

[]

serviceAccount - определить настройки ServiceAccount для оператора#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создавать ServiceAccount для оператора

true

serviceAccount.name

Имя ServiceAccount; если не задано и создание включено, имя генерируется автоматически

""

serviceAccount.automountServiceAccountToken

Автоматически монтировать токен ServiceAccount; при отключении токен нужно монтировать вручную

true

service - определить настройки Service для victoria-metrics-operator#

Параметр

Описание

Значение по умолчанию

service.trafficDistribution

Режим распределения трафика внутри Service

""

service.annotations

Аннотации для Service оператора

{}

service.labels

Метки для Service оператора

{}

service.clusterIP

Явно заданный ClusterIP для Service

""

service.externalIPs

Список внешних IP-адресов для Service

""

service.loadBalancerIP

Выделенный IP-адрес для Service типа LoadBalancer

""

service.loadBalancerSourceRanges

Список CIDR-диапазонов, которым разрешен доступ к LoadBalancer

[]

service.type

Тип Kubernetes Service для оператора

ClusterIP

service.healthCheckNodePort

HealthCheck NodePort для внешнего балансировщика

""

service.externalTrafficPolicy

Политика обработки внешнего трафика для Service

""

service.ipFamilyPolicy

Политика выбора IP family для Service

""

service.ipFamilies

Список IP family для Service

[]

service.servicePort

Порт Service оператора

8080

service.webhookPort

Порт webhook Service оператора

9443

podDisruptionBudget - определить настройки PodDisruptionBudget для оператора#

Параметр

Описание

Значение по умолчанию

podDisruptionBudget.enabled

Создавать PodDisruptionBudget для ограничения добровольных прерываний pod оператора

false

podDisruptionBudget.labels

Метки для ресурса PodDisruptionBudget

{}

terminationGracePeriodSeconds - определить timeout корректного завершения pod#

Параметр

Описание

Значение по умолчанию

terminationGracePeriodSeconds

Время в секундах, отводимое на корректное завершение pod перед принудительной остановкой

30

lifecycle - определить lifecycle hooks для контейнера оператора#

Параметр

Описание

Значение по умолчанию

lifecycle

Lifecycle hooks контейнера оператора

{}

resources - определить requests и limits для контейнера оператора#

Параметр

Описание

Значение по умолчанию

resources.limits.cpu

CPU limit контейнера оператора

120m

resources.limits.memory

Memory limit контейнера оператора

320Mi

resources.requests.cpu

CPU request контейнера оператора

80m

resources.requests.memory

Memory request контейнера оператора

120Mi

nodeSelector - определить правила выбора узлов для pod оператора#

Параметр

Описание

Значение по умолчанию

nodeSelector

Node selector для размещения pod оператора

{}

priorityClassName - определить PriorityClass для pod оператора#

Параметр

Описание

Значение по умолчанию

priorityClassName

Имя PriorityClass, назначаемое podм оператора

""

tolerations - определить tolerations для pod оператора#

Параметр

Описание

Значение по умолчанию

tolerations

Список tolerations для размещения pod оператора на tainted-узлах

[]

affinity - определить affinity-правила для pod оператора#

Параметр

Описание

Значение по умолчанию

affinity

Affinity и anti-affinity правила для размещения pod оператора

{}

topologySpreadConstraints - определить ограничения распределения pod по топологии кластера#

Параметр

Описание

Значение по умолчанию

topologySpreadConstraints

Список topology spread constraints для pod оператора

[]

extraArgs - определить дополнительные аргументы запуска оператора#

Параметр

Описание

Значение по умолчанию

extraArgs

Дополнительные аргументы командной строки для контейнера оператора

{}

env - определить переменные окружения для оператора#

Параметр

Описание

Значение по умолчанию

env

Переменные окружения для Deployment оператора. Пример конфигурации:

- name: VM_VMSINGLEDEFAULT_VERSION
value: v1.43.0

- name: VM_VMALERTDEFAULT_CONFIGRELOADIMAGE
value: „///dapp-configmap-reload/configmap-reload:v0.15.0“
- name: VM_VMALERTMANAGER_CONFIGRELOADERIMAGE
value: „///dapp-configmap-reload/configmap-reload:v0.15.0“

envFrom - определить альтернативные источники переменных окружения#

Параметр

Описание

Значение по умолчанию

envFrom

Альтернативные источники env-переменных, например ConfigMap или Secret. Пример конфигурации:

- configMapRef:
name: special-config

[]

extraHostPathMounts - определить дополнительные hostPath mounts для pod оператора#

Параметр

Описание

Значение по умолчанию

extraHostPathMounts

Дополнительные hostPath mounts для pod оператора. Пример конфигурации:

- name: certs-dir
mountPath: /etc/kubernetes/certs
subPath: «»
hostPath: /etc/kubernetes/certs
readOnly: true

[]

extraVolumes - определить дополнительные volumes для pod оператора#

Параметр

Описание

Значение по умолчанию

extraVolumes

Дополнительные volumes для pod оператора. Пример конфигурации:

- name: example
configMap:
name: example

[]

extraVolumeMounts - определить дополнительные volumeMounts для контейнера оператора#

Параметр

Описание

Значение по умолчанию

extraVolumeMounts

Дополнительные volumeMounts для контейнера оператора. Пример конфигурации:

- name: example
mountPath: /example

[]

extraContainers - определить дополнительные контейнеры в pod оператора#

Параметр

Описание

Значение по умолчанию

extraContainers

Список дополнительных контейнеров, запускаемых вместе с оператором. Пример конфигурации:

- name: config-reloader
image: reloader-image

[]

hostNetwork - определить использование hostNetwork для pod оператора#

Параметр

Описание

Значение по умолчанию

hostNetwork

Запускать pod оператора в сетевом пространстве хоста

false

shareProcessNamespace - определить общий process namespace между контейнерами pod#

Параметр

Описание

Значение по умолчанию

shareProcessNamespace

Включает общий process namespace между контейнерами одного pod, имеет смысл при использовании extraContainers

false

admissionWebhooks - определить настройки admission webhooks и TLS для валидации ресурсов#

Параметр

Описание

Значение по умолчанию

admissionWebhooks.enabled

Включает validation webhook для ресурсов VictoriaMetrics

false

admissionWebhooks.enabledCRDValidation.vmagent

Включает валидацию CRD vmagent

true

admissionWebhooks.enabledCRDValidation.vmalert

Включает валидацию CRD vmalert

true

admissionWebhooks.enabledCRDValidation.vmanomaly

Включает валидацию CRD vmanomaly

true

admissionWebhooks.enabledCRDValidation.vmsingle

Включает валидацию CRD vmsingle

true

admissionWebhooks.enabledCRDValidation.vmauth

Включает валидацию CRD vmauth

true

admissionWebhooks.enabledCRDValidation.vmrule

Включает валидацию CRD vmrule

true

admissionWebhooks.enabledCRDValidation.vmalertmanagerconfig

Включает валидацию CRD vmalertmanagerconfig

true

admissionWebhooks.enabledCRDValidation.vmalertmanager

Включает валидацию CRD vmalertmanager

true

admissionWebhooks.enabledCRDValidation.vmcluster

Включает валидацию CRD vmcluster

true

admissionWebhooks.enabledCRDValidation.vmuser

Включает валидацию CRD vmuser

true

admissionWebhooks.enabledCRDValidation.vlagent

Включает валидацию CRD vlagent

true

admissionWebhooks.enabledCRDValidation.vlogs

Включает валидацию CRD vlogs

true

admissionWebhooks.enabledCRDValidation.vlsingle

Включает валидацию CRD vlsingle

true

admissionWebhooks.enabledCRDValidation.vlcluster

Включает валидацию CRD vlcluster

true

admissionWebhooks.enabledCRDValidation.vmservicescrape

Включает валидацию CRD vmservicescrape

true

admissionWebhooks.enabledCRDValidation.vmpodscrape

Включает валидацию CRD vmpodscrape

true

admissionWebhooks.enabledCRDValidation.vmnodescrape

Включает валидацию CRD vmnodescrape

true

admissionWebhooks.enabledCRDValidation.vmprobe

Включает валидацию CRD vmprobe

true

admissionWebhooks.enabledCRDValidation.vmstaticscrape

Включает валидацию CRD vmstaticscrape

true

admissionWebhooks.policy

Политика поведения API server, если webhook недоступен

Fail

admissionWebhooks.certManager.enabled

Создавать и инжектировать сертификаты через cert-manager

false

admissionWebhooks.certManager.issuer

Параметры существующего issuer cert-manager; при пустом значении будет создан self-signed issuer

{}

admissionWebhooks.certManager.ca.secretTemplate

Шаблон секрета Certificate Authority для cert-manager

{}

admissionWebhooks.certManager.ca.subject

Параметры subject для Certificate Authority

{}

admissionWebhooks.certManager.ca.duration

Срок действия сертификата Certificate Authority

63800h0m0s

admissionWebhooks.certManager.ca.commonName

Common Name сертификата Certificate Authority

ca.validation.victoriametrics

admissionWebhooks.certManager.cert.secretTemplate

Шаблон секрета сертификата webhook

{}

admissionWebhooks.certManager.cert.subject

Параметры subject для сертификата webhook

{}

admissionWebhooks.certManager.cert.duration

Срок действия сертификата webhook

45800h0m0s

admissionWebhooks.certManager.cert.commonName

Common Name сертификата webhook

""

admissionWebhooks.keepTLSSecret

Сохранять TLS secret webhook при обновлениях и переразвертывании

true

admissionWebhooks.tls.caCert

CA certificate для webhook при ручной настройке TLS

Отсутствует

admissionWebhooks.tls.cert

Сертификат webhook при ручной настройке TLS

Отсутствует

admissionWebhooks.tls.key

Приватный ключ webhook при ручной настройке TLS

Отсутствует

serviceMonitor - определить настройки мониторинга оператора через VMServiceScrape или ServiceMonitor#

Параметр

Описание

Значение по умолчанию

serviceMonitor.enabled

Включает создание ресурса мониторинга для scrape метрик оператора

false

serviceMonitor.vm

Создавать VMServiceScrape при true и ServiceMonitor при false

true

serviceMonitor.extraLabels.app.kubernetes.io/part-of

Дополнительный label для ресурса мониторинга, определяющий logical grouping

dropapp-monitoring

serviceMonitor.extraLabels.prometheus

Дополнительный label для выбора Prometheus instance

k8s

serviceMonitor.annotations

Аннотации для VMServiceScrape или ServiceMonitor

{}

serviceMonitor.relabelings

Правила relabeling для target’ов мониторинга

[]

serviceMonitor.scheme

Схема обращения к endpoint мониторинга, например http или https

""

serviceMonitor.interval

Интервал scrape метрик оператора

""

serviceMonitor.scrapeTimeout

Тайм-аут scrape метрик оператора

""

serviceMonitor.tlsConfig

TLS-конфигурация для мониторинга оператора

{}

serviceMonitor.basicAuth

Параметры basic auth для мониторинга оператора

{}

probe - определить настройки readiness, liveness и startup probes#

Параметр

Описание

Значение по умолчанию

probe.readiness.httpGet.port

Порт readiness probe

probe

probe.readiness.initialDelaySeconds

Задержка перед первой readiness probe после старта контейнера

5

probe.readiness.periodSeconds

Интервал между readiness probe

15

probe.readiness.timeoutSeconds

Тайм-аут одной readiness probe

5

probe.readiness.failureThreshold

Количество неуспешных readiness probe до перевода контейнера в состояние NotReady

3

probe.liveness.tcpSocket.port

Порт liveness probe по TCP

probe

probe.liveness.initialDelaySeconds

Задержка перед первой liveness probe после старта контейнера

5

probe.liveness.periodSeconds

Интервал между liveness probe

15

probe.liveness.timeoutSeconds

Тайм-аут одной liveness probe

5

probe.liveness.failureThreshold

Количество неуспешных liveness probe до перезапуска контейнера

3

probe.startup

Параметры startup probe контейнера оператора

{}

extraObjects - определить дополнительные Kubernetes-объекты для развертывания#

Параметр

Описание

Значение по умолчанию

extraObjects

Список дополнительных Kubernetes-объектов, которые нужно развернуть вместе с chart

[]