Неявное поведение consul watches при обновление.
Неявное поведение consul watches при обновление.
Проблема - настроен кластер consul, каждые сутки происходит обновление сертификатов, делается consul reload. Возникает проблема - consul начинает считывает все watches, которые consul должен отслеживать и начинает запускать скрипты.
Изучение - Имеем в consul настроенный watches
{
"watches": [
{
"type": "key",
"key": "foo/bar/baz",
"args": [ "/usr/local/bin/somescript.sh" ],
"token": "some-token"
}
]
}
Если мы поместим данные в KV Consul, то Consul добавит TTL к этой записи. И после истечения TTL, запись будет удалена.
Варианты:
Ключ существует? | Значение |
---|---|
Не существует | Null |
Старое значение | JSON |
Новое значение | JSON |
Необходимо учитывает это поведение в скрипте. Отслеживать, когда получаем из STDIN значение Null, когда получаем JSON, то отслеживать старое или новое значение передано в скрипт.