Victoria-metrics-operator#

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

Основные задачи и возможности
  • Автоматизация управления компонентами: обеспечивает развертывание и конфигурирование VMAgent, VMAlertmanager, VMAlert, VMAuth и VMCluster.

  • Поддержка кластерного режима (VMCluster): обеспечивает работу высокодоступной архитектуры с репликацией метрик, горизонтальным масштабированием и автоматическим восстановлением узлов.

  • Обеспечение высокой доступности (HA): гарантирует отказоустойчивость всех компонентов стека мониторинга, включая автоматическое переключение при сбоях (failover) и балансировку нагрузки.

  • Нативная интеграция с Kubernetes: использует стандартные CRD (Custom Resource Definitions), позволяя управлять VictoriaMetrics через обычные манифесты Kubernetes.

Примечание

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

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

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

image – параметры контейнерного образа#

Параметр

Описание

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

image.registry

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

""

image.repository

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

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

image.tag

Тег образа оператора

v0.74.0

image.variant

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

""

image.pullPolicy

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

IfNotPresent

command – команда запуска контейнера#

Параметр

Описание

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

command

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

[]

configReloader – настройки образа config-reloader#

Параметр

Описание

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

configReloader.image.registry

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

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

configReloader.image.repository

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

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

configReloader.image.tag

Тег образа

v0.74.0

crds – настройки установки и обновления Custom Resource Definitions (CRD)#

Параметр

Описание

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

crds.enabled

Управление созданием CRD. Отключение возможно с crds.plain: false из-за ограничений условий подключения зависимостей Helm-чарта

true

crds.plain

Определение способа создания CRD.
Возможные значения: true – неизменяемые обычные CRD, требующие ручного обновления; false – шаблонизированные CRD

false

crds.annotations

Дополнительные аннотации CRD при использовании шаблонов CRD

{}

crds.cleanup.enabled

Включение очистки CRD

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 очистки

v1.29.15

crds.cleanup.image.pullPolicy

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

IfNotPresent

crds.cleanup.resources.limits.cpu

Ограничение CPU для job очистки

"500m"

crds.cleanup.resources.limits.memory

Ограничение памяти для job очистки

"256Mi"

crds.cleanup.resources.requests.cpu

Запрос CPU для job очистки

"100m"

crds.cleanup.resources.requests.memory

Запрос памяти для job очистки

"56Mi"

crds.upgrade.enabled

Включение job

false

crds.upgrade.forceConflicts

Активация добавления аргумента --force-conflics к kubectl

false

crds.upgrade.busybox.image.repository

Репозиторий образа busybox для job

busybox

crds.upgrade.busybox.image.tag

Тег образа busybox для job

latest

crds.upgrade.busybox.image.pullPolicy

Политика загрузки образа busybox для job

IfNotPresent

crds.upgrade.kubectl.image.repository

Репозиторий образа kubectl для job

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

crds.upgrade.kubectl.image.tag

Тег образа kubectl для job

v1.29.15

crds.upgrade.kubectl.image.pullPolicy

Политика загрузки образа kubectl для job

IfNotPresent

crds.upgrade.env

Дополнительные переменные окружения для job

[]

crds.upgrade.resources

Запросы и ограничения ресурсов для job.
Пример конфигурации:

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

{}

crds.upgrade.extraVolumes

Дополнительные тома (Volume) для pod

[]

crds.upgrade.extraVolumeMounts

Дополнительные точки монтирования томов (VolumeMount)

[]

crds.upgrade.nodeSelector

Селектор узлов для pod job.
Пример конфигурации:

disktype: ssd

{}

crds.upgrade.affinity

Правила привязки для pod job.
Пример конфигурации:

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

{}

crds.upgrade.tolerations

Toleration для размещения pod на узлах с ограничениями (taints).
Пример конфигурации:

- key: "key"
  operator: "Equal"
  value: "value"
  effect: "NoSchedule"

[]

crds.upgrade.topologySpreadConstraints

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

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

[]

crds.upgrade.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

crds.upgrade.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

crds.upgrade.podLabels

Метки, добавляемые ко всем создаваемым pod

{}

crds.upgrade.podAnnotations

Аннотации, добавляемые ко всем создаваемым pod

{}

crds.upgrade.serviceAccount.create

Создание ServiceAccount для job

true

crds.upgrade.serviceAccount.name

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

""

crds.upgrade.serviceAccount.annotations

Аннотации для ServiceAccount job

{}

crds.upgrade.serviceAccount.labels

Метки для ServiceAccount job

{}

crds.upgrade.serviceAccount.automountServiceAccountToken

Автоматическое монтирование токена ServiceAccount в job

true

crds.upgrade.securityContext.allowPrivilegeEscalation

Активация разрешения на эскалацию привилегий в контейнере

false

crds.upgrade.securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

true

crds.upgrade.securityContext.capabilities.drop

Список возможностей (capabilities), отзываемых у контейнера

- ALL

crds.upgrade.podSecurityContext.enabled

Включение контекста безопасности pod для job

true

crds.upgrade.podSecurityContext.fsGroup

Идентификатор группы файловой системы для pod, назначаемый владельцем всех файлов и каталогов на подключенных томах

65534

crds.upgrade.podSecurityContext.runAsGroup

ID группы для запуска контейнера

65534

crds.upgrade.podSecurityContext.runAsNonRoot

Запуск от имени пользователя без административных полномочий

true

crds.upgrade.podSecurityContext.runAsUser

ID пользователя для запуска контейнера

65534

crds.upgrade.podSecurityContext.seccompProfile.type

Тип профиля Seccomp для pod job

RuntimeDefault

replicaCount – количество реплик#

Параметр

Описание

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

replicaCount

Количество реплик pod инструмента

1

imagePullSecrets – Secret для загрузки образов#

Параметр

Описание

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

imagePullSecrets

Список Secret для загрузки образа контейнера из приватных реестров

[]

nameOverride – переопределение имени чарта#

Параметр

Описание

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

nameOverride

Переопределение базового имени ресурсов чарта для генерации имен

""

fullnameOverride – полное переопределение имени чарта#

Параметр

Описание

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

fullnameOverride

Полное переопределение имени для всех создаваемых ресурсов чарта

""

logLevel – уровень логирования#

Параметр

Описание

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

logLevel

Уровень логирования оператора.
Возможные значения: info, error

"info"

allowedMetricsEndpoints - разрешенные эндпоинты сбора метрик#

Параметр

Описание

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

allowedMetricsEndpoints

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

- /metrics
- /metrics/resources

rbac – настройки RBAC (управление доступом на основе ролей)#

Параметр

Описание

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

rbac.create

Активация автоматического создания ресурсов RBAC

true

rbac.aggregatedClusterRoles.enabled

Создание агрегированных ClusterRole для прав чтения и администрирования CRD

true

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

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

"true"

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

Метка для включения ClusterRole в агрегированную роль администрирования admin

"true"

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

Параметр

Описание

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

extraLabels

Метки, добавляемые ко всем создаваемым ресурсам

{}

podLabels – метки для pod#

Параметр

Описание

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

podLabels

Метки, добавляемые ко всем создаваемым pod

{}

annotations – общие аннотации для всех создаваемых ресурсов#

Параметр

Описание

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

annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

podSecurityContext – параметры контекста безопасности pod#

Параметр

Описание

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

podSecurityContext.enabled

Включение контекста безопасности pod

true

podSecurityContext.fsGroup

Идентификатор группы файловой системы для pod, назначаемый владельцем всех файлов и каталогов на подключенных томах

2000

podSecurityContext.runAsNonRoot

Запуск от имени пользователя без административных полномочий

true

podSecurityContext.runAsUser

ID пользователя для запуска pod

1000

securityContext – параметры контекста безопасности контейнера#

Параметр

Описание

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

securityContext.enabled

Включение контекста безопасности для серверных pod

true

securityContext.allowPrivilegeEscalation

Активация разрешения на эскалацию привилегий в контейнере

false

securityContext.capabilities.drop

Список возможностей (capabilities), отзываемых у контейнера

- ALL

securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

true

operator – функциональные настройки#

Параметр

Описание

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

operator.disable_prometheus_converter

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

false

operator.prometheus_converter_add_argocd_ignore_annotations

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

false

operator.enable_converter_ownership

Включение ссылки владения для конвертированных Prometheus-объектов; объекты VictoriaMetrics будут удалены при удалении исходных Prometheus-объектов

false

operator.useCustomConfigReloader

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

true

operator.openshift_compatibility

Включение режима совместимости с OpenShift (поддерживается с версии v0.73.0); при включении оператор автоматически настраивает контексты безопасности и права для кластеров OpenShift

false

operator.vpa_support

Включение поддержки VPA

false

operator.gateway_support

Включение поддержки Gateway API

false

operator.enable_default_prestop_hook

Включение генерации хука prestop в спецификациях контейнеров

false

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

Параметр

Описание

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

watchNamespaces

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

[]

serviceAccount – настройки сервисного аккаунта#

Параметр

Описание

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

serviceAccount.create

Активация создания ServiceAccount для оператора

true

serviceAccount.name

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

""

serviceAccount.automountServiceAccountToken

Автомонтирование токена ServiceAccount; при отключении токен необходимо монтировать вручную

true

service – настройки Service#

Параметр

Описание

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

service.trafficDistribution

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

""

service.annotations

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

{}

service.labels

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

{}

service.clusterIP

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

""

service.externalIPs

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

""

service.loadBalancerIP

Выделенный IP-адрес для Service балансировщика нагрузки

""

service.loadBalancerSourceRanges

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

[]

service.type

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

ClusterIP

service.healthCheckNodePort

Порт проверки состояния узла для внешнего балансировщика

""

service.externalTrafficPolicy

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

""

service.ipFamilyPolicy

Политика выбора IP-семейства для Service

""

service.ipFamilies

Список IP-семейств для Service

[]

service.servicePort

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

8080

service.nodePort

Порт узла для Service

""

service.webhookPort

Порт вебхука для Service

9443

podDisruptionBudget - параметры PodDisruptionBudget#

Параметр

Описание

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

podDisruptionBudget.enabled

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

false

podDisruptionBudget.minAvailable

Минимальное количество или процент pod, доступных для работы

0

podDisruptionBudget.maxUnavailable

Максимальное количество или процент pod, недоступных для работы

0

podDisruptionBudget.unhealthyPodEvictionPolicy

Критерии учета неработающих pod при принудительном удалении

~

podDisruptionBudget.labels

Метки для PodDisruptionBudget

{}

terminationGracePeriodSeconds – тайм-аут корректного завершения работы pod#

Параметр

Описание

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

terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

lifecycle – хуки жизненного цикла контейнера#

Параметр

Описание

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

lifecycle

Параметры lifecycle для контейнера

{}

resources – запросы и ограничения ресурсов контейнера#

Параметр

Описание

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

resources.limits.cpu

Ограничение ресурсов CPU для контейнера

120m

resources.limits.memory

Ограничение ресурсов памяти для контейнера

320Mi

resources.requests.cpu

Запрашиваемые ресурсы CPU для контейнера

80m

resources.requests.memory

Запрашиваемые ресурсы памяти для контейнера

120Mi

nodeSelector – селектор узлов для планирования pod#

Параметр

Описание

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

nodeSelector

Селектор узлов для планирования pod

{}

strategy – стратегия обновления#

Параметр

Описание

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

strategy.type

Тип стратегии обновления Deployment

RollingUpdate

strategy.rollingUpdate.maxSurge

Максимальное количество избыточных pod во время обновления

25%

strategy.rollingUpdate.maxUnavailable

Максимальное количество недоступных pod во время обновления

25%

priorityClassName – имя класса приоритета pod#

Параметр

Описание

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

priorityClassName

Имя PriorityClass для pod

""

runtimeClassName – класс среды выполнения#

Параметр

Описание

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

runtimeClassName

Имя класса среды исполнения для pod

""

tolerations – параметры Toleration для pod#

Параметр

Описание

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

tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

affinity – правила привязки (affinity и anti-affinity) pod к узлам#

Параметр

Описание

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

affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

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

Параметр

Описание

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

topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

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

Параметр

Описание

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

extraArgs

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

{}

env – переменные окружения#

Параметр

Описание

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

env

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

- name: VM_VMSINGLEDEFAULT_VERSION
  value: v1.43.0
- name: VM_VMALERTDEFAULT_CONFIGRELOADIMAGE
  value: '{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-configmap-reload/configmap-reload:v0.15.0'
- name: VM_VMALERTMANAGER_CONFIGRELOADERIMAGE
  value: '{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-configmap-reload/configmap-reload:v0.15.0'

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

Параметр

Описание

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

envFrom

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

- configMapRef:
    name: special-config

[]

extraHostPathMounts – дополнительные hostPath-монтирования#

Параметр

Описание

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

extraHostPathMounts

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

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

[]

extraVolumes – дополнительные тома (Volume)#

Параметр

Описание

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

extraVolumes

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

- name: example
  configMap:
    name: example

[]

extraVolumeMounts – дополнительные точки монтирования томов (VolumeMounts)#

Параметр

Описание

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

extraVolumeMounts

Дополнительные точки монтирования томов (VolumeMount)

- name: example
  mountPath: /example

[]

extraContainers – дополнительные контейнеры#

Параметр

Описание

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

extraContainers

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

- name: config-reloader
  image: reloader-image

[]

hostNetwork – использование сети хоста#

Параметр

Описание

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

hostNetwork

Использование сетевого пространства хоста для pod оператора

false

dnsPolicy – политика DNS для pod#

Параметр

Описание

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

dnsPolicy

Политика DNS для pod оператора; при включенном hostNetwork и пустом значении используется ClusterFirstWithHostNet

""

shareProcessNamespace – совместное использование пространства имен процессов контейнерами#

Параметр

Описание

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

shareProcessNamespace

Активация использования общего пространства имен процессов между контейнерами pod

false

admissionWebhooks – параметры для «мутирующего» и валидирующего вебхуков#

Параметр

Описание

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

admissionWebhooks.enabled

Включение «мутирующего» и валидирующего вебхуков

false

admissionWebhooks.annotations

Аннотации для «мутирующего» и валидирующего вебхуков

{}

admissionWebhooks.disabledFor

Список имен CRD, для которых отключена валидация.
Пример конфигурации:

- vmagent
- vmsingle

[]

admissionWebhooks.policy

Политика при недоступности оператора для валидации запроса

Fail

admissionWebhooks.certManager.enabled

Включение создания и внедрения сертификатов через cert-manager

false

admissionWebhooks.certManager.issuer

Пользовательский источник для cert-manager для автоматического выпуска и продления TLS-сертификатов

{}

admissionWebhooks.certManager.ca.secretTemplate

Шаблон Secret для самоподписанного корневого сертификата (CA)

{}

admissionWebhooks.certManager.ca.subject

Определение метаданных для корневого сертификата (CA), который генерирует cert-manager

{}

admissionWebhooks.certManager.ca.duration

Срок действия корневого сертификата CA

63800h0m0s

admissionWebhooks.certManager.ca.commonName

Общее имя в корневом сертификате CA

ca.validation.victoriametrics

admissionWebhooks.certManager.cert.secretTemplate

Шаблон Secret, в который cert-manager сохраняет готовый TLS-сертификат

{}

admissionWebhooks.certManager.cert.subject

Определение метаданных для TLS-сертификата

{}

admissionWebhooks.certManager.cert.duration

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

45800h0m0s

admissionWebhooks.certManager.cert.commonName

Общее имя в TLS-сертификате

""

admissionWebhooks.keepTLSSecret

Сохранение Secret с TLS-сертификатами при обновлении

true

admissionWebhooks.tls.caCert

Строка корневого сертификата (CA) для проверки подлинности TLS-сертификатов

~

admissionWebhooks.tls.cert

Строка TLS-сертификата для шифрования трафика

~

admissionWebhooks.tls.key

Ключ для TLS-сертификата

~

serviceMonitor – параметры ServiceMonitor#

Параметр

Описание

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

serviceMonitor.enabled

Включение мониторинга оператора через VMServiceScrape или ServiceMonitor

false

serviceMonitor.vm

Создание VMServiceScrape. Если установлено false создается ServiceMonitor (требуются предварительно установленные CRD prometheus-operator)

true

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

Метка части приложения для ServiceMonitor

dropapp-monitoring

serviceMonitor.extraLabels.prometheus

Метка Prometheus для ServiceMonitor

k8s

serviceMonitor.annotations

Аннотации для ресурса ServiceMonitor

{}

serviceMonitor.relabelings

Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик

[]

serviceMonitor.scheme

Схема подключения для ServiceMonitor

""

serviceMonitor.interval

Интервал сбора метрик

""

serviceMonitor.scrapeTimeout

Тайм-аут сбора метрик

""

serviceMonitor.tlsConfig

Конфигурация TLS для ServiceMonitor

{}

serviceMonitor.basicAuth

Базовая аутентификация для ServiceMonitor

{}

probe – настройки проверок контейнера#

Параметр

Описание

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

probe.readiness.httpGet.port

Порт проверки готовности

probe

probe.readiness.initialDelaySeconds

Задержка перед первой проверкой готовности после запуска контейнера

5

probe.readiness.periodSeconds

Интервал между проверками готовности

15

probe.readiness.timeoutSeconds

Тайм-аут одной проверки готовности

5

probe.readiness.failureThreshold

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

3

probe.liveness.tcpSocket.port

Порт проверки работоспособности по протоколу TCP

probe

probe.liveness.initialDelaySeconds

Задержка перед первой проверкой работоспособности после запуска контейнера

5

probe.liveness.periodSeconds

Интервал между проверками работоспособности

15

probe.liveness.timeoutSeconds

Тайм-аут одной проверки работоспособности

5

probe.liveness.failureThreshold

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

3

probe.startup

Параметры проверки запуска контейнера

{}

extraObjects – дополнительные объекты Helm-чарта#

Параметр

Описание

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

extraObjects

Добавление дополнительных динамических объектов в Helm-чарте

[]