Reloader#
Reloader - это инструмент, который позволяет автоматически обновлять контейнеры в DropApp при возникновении изменений, связанных с ConfigMap или Secret, запуская «плавающее» обновление (rolling update).
Примечание
«Плавающее» обновление - постепенная замена старых pods на новые. Pods обновляются поочередно, так продолжается до тех пор, пока все из них не будут обновлены.
Функции Reloader:
поддерживает
sealed-secrets, позволяя шифроватьSecrets;инициирует изменения для развертывания, которое зависит от настройки стратегии;
перезагружает модуль только в случае, если в
DeploymentConfigs/Deployment/Daemonsets/StatefulsetsиспользуетсяConfigMapилиSecret.
Список основных флагов Reloader представлен в таблице ниже.
Флаг |
Описание |
|---|---|
|
Переопределить аннотацию |
|
Изменить аннотацию |
|
Переопределить аннотацию |
|
Изменить аннотацию поиска |
|
Задать аннотацию соответствий |
|
Изменить аннотацию |
|
Заменить аннотацию |
|
Игнорировать определенные namespaces |
|
Следить только за определенными namespaces с определенными ярлыками |
|
Следить только за определенными |
|
Игнорировать определенные ресурсы |
Опция --log-format=json позволяет настраивать логирование в формате JSON.
Опция --reload-strategy=<strategy-name> позволяет задать стратегию перезагрузки. <strategy-name> - название стратегии перезагрузки Reloader:
env-vars- стратегия перезагрузки по умолчанию. Можно задать с помощью--reload-strategy=env-vars.annotations- перезагрузка любого отслеживаемого ресурса, еслиConfigMapилиSecretудалены и созданы заново. Можно задать с помощью--reload-strategy=annotations.
Сценарии использования Reloader#
Чтобы использовать Reloader с Deployment, добавьте аннотацию (по умолчанию reloader.stakater.com/auto). Это позволит Reloader автоматически обнаруживать DeploymentConfigs/Deployments/Daemonsets/Statefulsets:
kind: Deployment
metadata:
annotations:
reloader.stakater.com/auto: "true"
spec:
template:
metadata:
Также можно ограничить обнаружение ConfigMap или Secret объектами, которые имеют специальную аннотацию. Для этого добавьте reloader.stakater.com/search в Deployment:
kind: Deployment
metadata:
annotations:
reloader.stakater.com/search: "true"
spec:
template:
Также добавьте reloader.stakater.com/match в ConfigMap или Secret:
kind: ConfigMap
metadata:
annotations:
reloader.stakater.com/match: "true"
data:
key: value
Правила использования аннотаций#
Аннотации reloader.stakater.com/search и reloader.stakater.com/auto не могут использоваться вместе. Если в Deployment есть аннотация reloader.stakater.com/auto: "true", то она всегда будет перезагружаться при изменении ConfigMap или Secret.
Аннотации reloader.stakater.com/auto и ее типы (secret.reloader.stakater.com/auto или configmap.reloader.stakater.com/auto) не могут использоваться вместе. Если в Deployment есть обе аннотации, то достаточно, чтобы одна из них была истинной для запуска перезагрузки.
Можно указать конкретный ConfigMap или Secret, который будет вызывать последовательное обновление (rolling upgrade) только при изменении указанного ConfigMap или Secret. Для этого необходимо установить аннотации auto значение "false".
Также можно включить автоматическую перезагрузку для всех ресурсов, установив опцию --auto-reload-all. В данном случае все ресурсы, у которых аннотация auto (или ее тип) не установлена в значении "false", будут автоматически перезагружены при обновлении ConfigMap или Secret.
Установка аннотации auto на неопределенное значение считается как "false".
Примечание
Последовательное обновление - метод, при котором все компоненты обновляются согласно строгой иерархии.
Сценарии использования Configmap#
Для запуска последовательного обновления при изменении ConfigMap добавьте следующую настройку в Deployment:
kind: Deployment
metadata:
annotations:
configmap.reloader.stakater.com/reload: "<name_configmap>"
spec:
template:
metadata:
Где <name_configmap> - название ConfigMap.
Если необходимо выполнить последовательное обновление при изменении нескольких ConfigMap, используйте запятую для разделения имен:
kind: Deployment
metadata:
annotations:
configmap.reloader.stakater.com/reload: "<name_configmap_1>,<name_configmap_2>,<name_configmap_3>"
spec:
template:
metadata:
Сценарии использования Secret#
Для выполнения последовательного обновления при изменении Secret добавьте следующую настройку в Deployment:
kind: Deployment
metadata:
annotations:
secret.reloader.stakater.com/reload: "<name_secret>"
spec:
template:
metadata:
Где <name_secret> - название Secret.
Если необходимо выполнить изменение нескольких Secret, используйте запятую для разделения имен:
kind: Deployment
metadata:
annotations:
secret.reloader.stakater.com/reload: "<name_secret_1>,<name_secret_2>,<name_secret_3>"
spec:
template:
metadata:
Сценарий использования Reloader#
Для автоматического обнаружения конфигураций deploymentconfigs, deployments,daemonsets, statefulset, rollouts, cronjobs, jobs используйте следующую настройку:
kind: Deployment
metadata:
name: "<name>"
annotations:
reloader.stakater.com/auto: "true"
spec:
template:
metadata:
Где <name> - название Deployment.