Spring-Cloud-Vault: минимальное обновление против порога истечения - PullRequest
0 голосов
/ 08 января 2020

Spring-cloud-vault Управление жизненным циклом аренды (возобновление и отзыв) В документации говорится, что:

spring.cloud.vault.config.lifecycle.min -renewal: устанавливает продолжительность, которая по крайней мере требуется до возобновления аренды. Этот параметр предотвращает слишком частое возобновление.

spring.cloud.vault.config.lifecycle.expiry-threshold: устанавливает срок истечения срока действия. Срок действия аренды обновляется на заданный период времени до его истечения.

Мне трудно понять разницу между этими двумя вариантами конфигурации. Было бы полезно привести пример того, как каждый из этих параметров влияет на жизненный цикл обновления аренды. Например: мне кажется довольно ясным, что если срок аренды составляет 10 минут, а порог истечения установлен равным 1 минуте, то через 9 минут после получения аренды Spring-cloud-vault возобновит аренду. Но если это правда, какова цель параметра конфигурации min-renewal ?

1 Ответ

1 голос
/ 08 января 2020

Порог истечения контролирует время продления, в которое продлевается аренда.

Например: мне кажется довольно ясным, что если срок аренды составляет 10 минут, и если порог истечения устанавливается на 1 минуту, затем через 9 минут после получения аренды Spring-Cloud-Vault возобновит аренду.

Ваше понимание верно.

Что насчет min-renewal?

Если оставшееся время действия вашего договора аренды составляет менее 1 минуты (скажем, 30 секунд), тогда расчетное время обновления будет составлять 30 секунд в прошлом (или сейчас, так как мы не можем запланировать события в прошлое). min-renewal помогает отменить запросы на обновление. Это потому, что в таком сценарии refre sh происходит немедленно.

После продления SecretLeaseContainer планирует последующее продление, согласно которому срок аренды будет чуть менее 30 секунд. Мы не хотим создавать al oop, который забивает ваш сервер Vault запросами на обновление, если оставшийся срок аренды меньше expiry-threshold.

Пример:

  • expiry-threshold: 60 секунд
  • min-renewal: 10 секунд

Следующий список событий показывает с временной корреляцией, что происходит, в то время как TTL является окончательным и не может быть продлен:

  • 10: 00: 00 Аренда получена. TTL 10 минут (600 секунд). График продления аренды за 9 минут (10 minutes TTL - 1 minute Порог истечения -> 9 minutes)
  • 10: 09: 00 Аренда продлена. Оставшийся TTL 1 минута (60 секунд). Запланируйте продление аренды на 10 секунд (1 minute TTL - 1 minute порог истечения -> 0 минут. Возвратитесь к 10 seconds минутному продлению, так как это большее значение -> 10 seconds).
  • 10: 09: 10 Аренда продлена. Оставшиеся ТТЛ 50 секунд. Запланируйте продление аренды на 10 секунд (50 seconds TTL - 1 minute Порог истечения -> -10 seconds. Откатитесь на 10 секунд с минимальным продлением, так как это большее значение -> 10 секунд).
  • (продолжайте до достижения 10 seconds)
  • 10: 09: 50 Аренда возобновлена. Оставшийся TTL меньше 10 seconds. Минимальное продление больше, чем у оставшихся TTL, и срок аренды считается истекшим.

Пример, когда порог истечения больше, чем минимальное продление:

  • expiry-threshold: 5 минуты (180 секунд)
  • min-renewal: 6 минут (360 секунд)

Следующий список событий показывает с временной корреляцией, что происходит, в какое время при условии, что TTL является окончательным и не может быть продлен:

  • 10: 00: 00 Аренда получена. TTL 10 minutes (600 секунд). Запланируйте продление аренды на 6 минут (10 minutes TTL - 5 minute Порог истечения -> 5 minutes. Минимальное продление установлено на 6 минут для выдачи продления не более одного раза в 6 minutes -> 6 minutes)

  • 10: 06: 00 Аренда получена. TTL 4 minutes (360 секунд). Запланируйте продление аренды через 6 минут (4 minutes TTL - 5 minute Порог истечения -> -1 minutes. 6 minutes минутное продление, поскольку это больше, чем оставшиеся TTL, поэтому срок аренды считается истекшим)

...