Всем привет!
Все началось с простого опроса, в котором большинство ( ~ 41%) выбрало ответ «почти мгновенно», однако это не совсем так.
В статье Автор разбирает внутренние механизмы, отвечающие за процесс обновления
Secrets и ConfigMaps в Pod. У Kubelet есть параметр
configMapAndSecretChangeDetectionStrategy, который может принимать 3 значения:🍭
Get: получение объектов от API server🍭
Cache: использованием TTL Cache🍭
Watch (Default): наблюдение за интересующим объектомПолучается, что у Kubelet есть вся необходимая информация, однако обновления (мгновенного) не происходит. Оказалось, что у Kubernetes отсутствуют механизмы, запускающие реконсиляцию при обновлении ресурса (в нашем случае это Secret и ConfigMap).
На деле обновление происходит при вызове
syncPod функции:🍭 В случае изменения
Pod (Pod event update, изменение параметров Pod) – что происходит не часто🍭 Периодически: где-то раз в минуту
Именно по этой причине, по умолчанию,
Secret и ConfigMap не синхронизируются мгновенно. Если хочется проверить, то есть repo с PoC. Если интересно как можно это ускорить – ответ есть в статье.