Reloader#

Reloader - это инструмент, который позволяет автоматически обновлять контейнеры в DropApp при возникновении изменений, связанных с ConfigMap или Secret, запуская «плавающее» обновление (rolling update).

Примечание

«Плавающее» обновление - постепенная замена старых pods на новые. Pods обновляются поочередно, так продолжается до тех пор, пока все из них не будут обновлены.

Функции Reloader:

  • поддерживает sealed-secrets, позволяя шифровать Secrets;

  • инициирует изменения для развертывания, которое зависит от настройки стратегии;

  • перезагружает модуль только в случае, если в DeploymentConfigs/Deployment/Daemonsets/Statefulsets используется ConfigMap или Secret.

Список основных флагов Reloader представлен в таблице ниже.

Список флагов Reloader#

Флаг

Описание

--auto-annotation

Переопределить аннотацию auto

--secret-auto-annotation

Изменить аннотацию secret auto

--configmap-auto-annotation

Переопределить аннотацию configmap auto

--auto-search-annotation

Изменить аннотацию поиска auto search

--search-match-annotation

Задать аннотацию соответствий search-match

--configmap-annotation

Изменить аннотацию ConfigMap

--secret-annotation

Заменить аннотацию Secret

--namespaces-to-ignore

Игнорировать определенные namespaces

--namespace-selector

Следить только за определенными namespaces с определенными ярлыками

--resource-label-selector

Следить только за определенными Secrets/ConfigMaps с определенными ярлыками

--resources-to-ignore

Игнорировать определенные ресурсы

Опция --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.