重新加载命名空间和标签筛选
默认情况下,将使用通过命名空间解析中概述的步骤选择的命名空间来监听配置映射和密钥的更改。也就是说:如果您没有告诉 reload 要监视哪些命名空间和配置映射/密钥,它将监视使用上述算法计算出的命名空间中的所有配置映射/密钥。
另一方面,你可以定义更细粒度的方法。例如,你可以指定要监控变更的命名空间:
spring:
application:
name: event-reload
cloud:
kubernetes:
reload:
enabled: true
strategy: shutdown
mode: event
namespaces:
- my-namespace
这样的配置将使应用程序仅监视 my-namespace 命名空间中的更改。请注意,这将监视所有的 ConfigMap/Secret(取决于您启用了哪一个)。如果您想要更细粒度的控制,可以启用“标签过滤”功能。首先,我们需要通过以下设置启用此支持:enable-reload-filtering: true
spring:
application:
name: event-reload
cloud:
kubernetes:
reload:
enabled: true
strategy: shutdown
mode: event
namespaces:
- my-namespaces
monitoring-config-maps: true
enable-reload-filtering: true
这样做的目的是监视那些仅带有 spring.cloud.kubernetes.config.informer.enabled: true 标签的 ConfigMap 和 Secret。
表 1. 属性:
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
spring.cloud.kubernetes.reload.enabled | Boolean | false | 启用属性源和配置重新加载的监控 |
spring.cloud.kubernetes.reload.monitoring-config-maps | Boolean | true | 允许监控 ConfigMap 中的更改 |
spring.cloud.kubernetes.reload.monitoring-secrets | Boolean | false | 允许监控 Secret 中的更改 |
spring.cloud.kubernetes.reload.strategy | Enum | refresh | 触发重新加载时使用的策略 (refresh, restart_context, 或 shutdown) |
spring.cloud.kubernetes.reload.mode | Enum | event | 指定如何监听属性源中的更改 (event 或 polling) |
spring.cloud.kubernetes.reload.period | Duration | 15s | 使用 polling 策略时验证更改的周期 |
spring.cloud.kubernetes.reload.namespaces | String[] | 应监视更改的命名空间 |
笔记:
-
你不应该在配置映射或密钥中使用
spring.cloud.kubernetes.reload下的属性。在运行时更改这些属性可能会导致意外结果。 -
当你使用
refresh级别时,删除一个属性或整个配置映射不会恢复 bean 的原始状态。