Reloader#

Reloader – это контроллер Kubernetes, который автоматически перезапускает (пересоздает) рабочие нагрузки, такие как Deployment, StatefulSet, DaemonSet и ArgoRollout, при обновлении связанных ConfigMap или Secret.

По умолчанию Kubernetes не перезапускает pod при изменении этих ресурсов, что может привести к использованию устаревших конфигураций. Reloader решает эту проблему, обеспечивая актуальность конфигураций в работающих приложениях.

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

    При изменении ConfigMap или Secret, на которые ссылается pod, Reloader инициирует его пересоздание через rollout или restart, чтобы изменения вступили в силу.

  • Гибкое управление через аннотации:

    Позволяет указать, какие именно ресурсы должны отслеживаться:

    • reloader.stakater.com/auto: "true" – следить за всеми ConfigMap и Secret в шаблоне pod;

    • secret.reloader.stakater.com/auto: "true" – следить только за Secret;

    • configmap.reloader.stakater.com/auto: "true" – следить только за ConfigMap.

  • Поддержка разных стратегий перезапуска:

    Можно выбрать:

    • rollout — изменение шаблона pod (по умолчанию);

    • restart — удаление pod без изменения манифеста (удобно при использовании GitOps, например, с ArgoCD).

  • Интеграция с GitOps и CI/CD:

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

  • Работа с внешними источниками:

    Совместим с такими инструментами, как ExternalSecrets, SealedSecrets и Сert-manager, автоматически реагируя на создаваемые ими секреты.

Примечание

Reloader устанавливается по умолчанию с компонентом Pod-management.

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

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

kubernetes – настройки подключения к Kubernetes#

Параметр

Описание

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

kubernetes.host

URL хоста Kubernetes API для подключения​

https://kubernetes.default

nameOverride – переопределение имени ресурса#

Параметр

Описание

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

nameOverride

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

"" (пустая строка)

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

Параметр

Описание

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

fullnameOverride

Полное переопределение сгенерированного имени ресурсов

"" (пустая строка)

image – настройки образа контейнера#

Параметр

Описание

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

image.repository

Репозиторий образа Reloader с использованием шаблонных переменных

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-reloader/reloader

image.tag

Тег версии образа Reloader

v1.4.8

image.pullPolicy

Политика загрузки образа. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

reloader – основные настройки Reloader#

Параметр

Описание

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

reloader.autoReloadAll

Автоматически перезагружать все ресурсы при изменении их ConfigMap/Secret без необходимости добавления аннотаций. Если установлено в true, все ресурсы без аннотации reloader.stakater.com/auto: "false" будут автоматически перезагружены​

false

reloader.isArgoRollouts

Включить поддержку Argo Rollouts для отслеживания изменений и перезагрузки

false

reloader.isOpenshift

Включить поддержку OpenShift DeploymentConfigs

false

reloader.ignoreSecrets

Игнорировать изменения Secret-объектов

false

reloader.ignoreConfigMaps

Игнорировать изменения ConfigMap-объектов

false

reloader.ignoreJobs

Исключить Job workloads из автоматического мониторинга перезагрузки

false

reloader.ignoreCronJobs

Исключить CronJob workloads из автоматического мониторинга перезагрузки

false

reloader.reloadOnCreate

Включить перезагрузку при создании новых ConfigMap/Secret

false

reloader.reloadOnDelete

Включить перезагрузку при удалении ConfigMap/Secret

false

reloader.syncAfterRestart

Включить синхронизацию после перезагрузки Reloader для Add-событий (требует reloadOnCreate=true)

false

reloader.reloadStrategy

Стратегия для запуска перезагрузки ресурсов. Возможные значения: default, env-vars, annotations

default

reloader.ignoreNamespaces

Разделенный запятыми список пространств имен для игнорирования

"" (пустая строка)

reloader.namespaceSelector

Разделенный запятыми список селекторов меток Kubernetes для выбора пространств имен

"" (пустая строка)

reloader.resourceLabelSelector

Разделенный запятыми список селекторов меток для выбора ConfigMap/Secret-объектов

"" (пустая строка)

reloader.logFormat

Формат логирования. Возможные значения: json или ""

"" (пустая строка)

reloader.logLevel

Уровень логирования. Возможные значения: trace, debug, info, warning, error, fatal, panic

info

reloader.watchGlobally

Разрешить Reloader отслеживать ConfigMap/Secret во всех пространствах имен (true) или только в одном (false)

true

reloader.enableHA

Включить выбор лидера (leader election) для запуска нескольких реплик в режиме высокой доступности

false

reloader.enablePProf

Включить профилирование pprof для анализа производительности

false

reloader.pprofAddr

Адрес для запуска сервера pprof

:6060

reloader.readOnlyRootFileSystem

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

false

reloader.legacy.rbac

Использовать устаревший режим RBAC

false

reloader.matchLabels

Метки pod для совпадения и отслеживания

{} (пустой объект)

reloader.enableMetricsByNamespace

Обнародовать дополнительный счетчик Prometheus для перезагрузок по пространствам имен (может иметь высокую кардинальность в больших кластерах)

false

reloader.deployment.dnsConfig – конфигурация DNS для развертывания#

Параметр

Описание

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

reloader.deployment.dnsConfig

Конфигурация DNS для pod (nameservers, searches, options)

{} (пустой объект)

reloader.deployment – параметры развертывания#

Параметр

Описание

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

reloader.deployment.replicas

Количество реплик. Для запуска нескольких реплик установите reloader.enableHA = true

1

reloader.deployment.revisionHistoryLimit

Лимит количества ревизий развертывания, хранящихся в истории

2

reloader.deployment.nodeSelector

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

{} (пустой объект)

reloader.deployment.affinity

Правила affinity для управления размещением pod (node affinity, pod affinity, pod anti-affinity)

{} (пустой объект)

reloader.deployment.volumeMounts

Список мест монтирования для томов в контейнере

[] (пустой массив)

reloader.deployment.volumes

Список томов для pod

[] (пустой массив)

reloader.deployment.tolerations

Список tolerations для планирования на узлы с taint

[] (пустой массив)

reloader.deployment.topologySpreadConstraints

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

[] (пустой массив)

reloader.deployment.annotations

Аннотации для развертывания

{} (пустой объект)

reloader.deployment.securityContext – контекст безопасности pod#

Параметр

Описание

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

reloader.deployment.securityContext.runAsNonRoot

Требовать запуск контейнера от имени непривилегированного пользователя

true

reloader.deployment.securityContext.runAsUser

ID пользователя, от имени которого запускается контейнер

65534

reloader.deployment.securityContext.seccompProfile.type

Тип профиля seccomp для ограничения системных вызовов. Возможные значения: RuntimeDefault, Unconfined, Localhost

RuntimeDefault

reloader.deployment.containerSecurityContext – контекст безопасности контейнера#

Параметр

Описание

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

reloader.deployment.containerSecurityContext.capabilities.drop

Список capabilities Linux для удаления из контейнера

["ALL"]

reloader.deployment.containerSecurityContext.allowPrivilegeEscalation

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

false

reloader.deployment.containerSecurityContext.readOnlyRootFilesystem

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

true

reloader.deployment.labels – метки для развертывания#

Параметр

Описание

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

reloader.deployment.labels.provider

Провайдер приложения

stakater

reloader.deployment.labels.group

Группа приложения

com.stakater.platform

reloader.deployment.labels.version

Версия приложения

v1.4.8

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

Параметр

Описание

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

reloader.deployment.env.open

Открытые переменные окружения в формате ключ-значение

~ (не задано)

reloader.deployment.env.secret

Переменные окружения из Secret объектов

~ (не задано)

reloader.deployment.env.field

Переменные окружения из других полей pod

~ (не задано)

reloader.deployment.env.existing

Переменные окружения из существующих Secret объектов

~ (не задано)

reloader.deployment.livenessProbe – проверка доступности pod#

Параметр

Описание

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

reloader.deployment.livenessProbe

Параметры проверки доступности (timeoutSeconds, failureThreshold, periodSeconds, successThreshold)

{} (пустой объект)

reloader.deployment.readinessProbe – проверка готовности pod#

Параметр

Описание

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

reloader.deployment.readinessProbe

Параметры проверки готовности (timeoutSeconds, failureThreshold, periodSeconds, successThreshold)

{} (пустой объект)

reloader.deployment.resources – ресурсные требования#

Параметр

Описание

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

reloader.deployment.resources.limits.cpu

Максимально допустимое использование CPU

100m

reloader.deployment.resources.limits.memory

Максимально допустимое использование памяти

512Mi

reloader.deployment.resources.requests.cpu

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

10m

reloader.deployment.resources.requests.memory

Запрашиваемый объем памяти для планирования

128Mi

reloader.deployment.pod – настройки pod#

Параметр

Описание

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

reloader.deployment.pod.annotations

Аннотации для pod

{} (пустой объект)

reloader.deployment.priorityClassName

Класс приоритета для pod в кластере

"" (пустая строка)

reloader.deployment.gomaxprocsOverride

Переопределение переменной окружения GOMAXPROCS для Go runtime (оставьте пустым, чтобы использовать значение по умолчанию)

"" (пустая строка)

reloader.deployment.gomemlimitOverride

Переопределение переменной окружения GOMEMLIMIT для Go runtime (оставьте пустым, чтобы использовать значение по умолчанию)

"" (пустая строка)

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

Параметр

Описание

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

reloader.service

Конфигурация Service для Reloader (labels, annotations, port)

{} (пустой объект)

reloader.rbac – настройки управления доступом на основе ролей#

Параметр

Описание

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

reloader.rbac.enabled

Создавать ли ресурсы RBAC (Role, ClusterRole, RoleBinding, ClusterRoleBinding)

true

reloader.rbac.labels

Метки для ресурсов RBAC

{} (пустой объект)

reloader.serviceAccount – настройки ServiceAccount#

Параметр

Описание

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

reloader.serviceAccount.create

Создавать ли ServiceAccount для Reloader

true

reloader.serviceAccount.labels

Метки для ServiceAccount

{} (пустой объект)

reloader.serviceAccount.annotations

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

{} (пустой объект)

reloader.serviceAccount.name

Имя ServiceAccount. Если не задано и create=true, имя генерируется автоматически

~ (не задано)

reloader.custom_annotations – пользовательские аннотации#

Параметр

Описание

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

reloader.custom_annotations

Дополнительные аннотации для переопределения стандартных (configmap, secret)

{} (пустой объект)

reloader.serviceMonitor – настройки ServiceMonitor для Prometheus#

Параметр

Описание

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

reloader.serviceMonitor.enabled

Создавать ли ServiceMonitor для сбора метрик Prometheus (устаревший способ, используйте podMonitor)

false

reloader.serviceMonitor.labels

Метки для ресурса ServiceMonitor для фильтрации в Prometheus

{} (пустой объект)

reloader.serviceMonitor.annotations

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

{} (пустой объект)

reloader.serviceMonitor.honorLabels

Сохранять ли исходные метки job и instance из ServiceMonitor

true

reloader.serviceMonitor.metricRelabelings

Правила переименования метрик после сбора

[] (пустой массив)

reloader.serviceMonitor.relabelings

Правила переименования меток перед сбором метрик

[] (пустой массив)

reloader.serviceMonitor.targetLabels

Целевые метки для ServiceMonitor

[] (пустой массив)

reloader.podMonitor – настройки PodMonitor для Prometheus#

Параметр

Описание

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

reloader.podMonitor.enabled

Создавать ли PodMonitor для сбора метрик Prometheus (рекомендуемый способ)

false

reloader.podMonitor.labels

Метки для ресурса PodMonitor для фильтрации в Prometheus

{} (пустой объект)

reloader.podMonitor.annotations

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

{} (пустой объект)

reloader.podMonitor.honorLabels

Сохранять ли исходные метки job и instance из PodMonitor

true

reloader.podMonitor.metricRelabelings

Правила переименования метрик после сбора

[] (пустой массив)

reloader.podMonitor.relabelings

Правила переименования меток перед сбором метрик

[] (пустой массив)

reloader.podMonitor.podTargetLabels

Целевые метки pod для PodMonitor

[] (пустой массив)

reloader.podDisruptionBudget – политика нарушения pod#

Параметр

Описание

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

reloader.podDisruptionBudget.enabled

Включить ограничение количества недоступных pod во время добровольных нарушений

false

reloader.netpol – сетевая политика#

Параметр

Описание

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

reloader.netpol.enabled

Создавать ли NetworkPolicy для ограничения сетевого трафика

false

reloader.netpol.from

Входящие правила трафика (podSelector для разрешенных источников)

[]

reloader.netpol.to

Исходящие правила трафика (podSelector для разрешенных назначений)

[]

reloader.verticalPodAutoscaler – автоматическое масштабирование pod#

Параметр

Описание

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

reloader.verticalPodAutoscaler.enabled

Включить вертикальное автомасштабирование для автоматического управления ресурсами

false

reloader.verticalPodAutoscaler.controlledResources

Ресурсы, которыми может управлять VPA (по умолчанию CPU и память)

[]

reloader.verticalPodAutoscaler.maxAllowed

Максимально допустимые ресурсы для pod (cpu, memory)

{}

reloader.verticalPodAutoscaler.minAllowed

Минимально допустимые ресурсы для pod (cpu, memory)

{}

reloader.verticalPodAutoscaler.updatePolicy.updateMode

Режим обновления VPA. Возможные значения: Off, Initial, Recreate, Auto

Auto

image – URL webhook#

Параметр

Описание

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

reloader.webhookUrl

URL webhook для отправки уведомлений при перезагрузке

""