spring-cloud-vault:最小续订与到期阈值

spring-cloud-vault: min-renewal vs. expiry-threshold

spring-cloud-vault Lease lifecycle management (renewal and revocation) 文档指出:

spring.cloud.vault.config.lifecycle.min-renewal: sets the duration that is at least required before renewing a lease. This setting prevents renewals from happening too often.

spring.cloud.vault.config.lifecycle.expiry-threshold: sets the expiry theshold. A lease is renewed the configured period of time before it expires.

我很难理解这两个配置选项之间的区别。举例说明这些参数中的每一个如何影响租约续订生命周期会很有帮助。例如:对我来说似乎很清楚,如果租约 TTL 是 10 分钟,并且如果 expiry-threshold 设置为 1 分钟,那么在获得租约后 9 分钟 spring-cloud-vault 将续订租。但是,如果这是真的,min-renewal 配置参数的目的是什么?

到期阈值控制租约续订的续订时间。

For example: it seems pretty clear to me that if the lease TTL is 10 minutes, and if the expiry-threshold is set to 1 minute, then 9 minutes after the lease is acquired spring-cloud-vault would renew the lease.

你的理解是正确的。

min-renewal 怎么样?

当您的租约剩余有效期少于 1 分钟(比如 30 秒),则计算的续约时间将是过去 30 秒(或现在,因为我们无法安排过去发生的事情). min-renewal 有助于消除续订请求。这是因为在这种情况下,刷新会立即发生。

续订后,SecretLeaseContainer 会安排后续续订,报告租约有效期略短于 30 秒。如果剩余租约期限少于 expiry-threshold.

,我们不想创建一个循环来通过续订请求来打击您的 Vault 服务器

示例:

  • 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 续租。剩余 TTL 50 秒。在 10 秒内安排租约续订(50 seconds TTL - 1 minute 到期阈值 -> -10 seconds。回到 10 秒最小续订,因为这是较大的值 -> 10 秒)。
  • (继续直到到达 10 seconds
  • 10:09:50 续租。剩余 TTL 小于 10 seconds。 Min-renewal 大于剩余的 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 minutes6 minutes 最小续订,因为它大于剩余的 TTL,因此租约被视为已过期)