重新加载命名空间和标签过滤

默认情况下,将使用命名空间解析中概述的步骤选择的命名空间来侦听 configmaps 和 secrets 中的更改。即:如果您没有告诉重新加载要监视哪些命名空间和 configmaps/secrets,它将监视根据上述算法计算出的命名空间中的所有 configmaps/secrets。

另一方面,您可以定义更细粒度的策略。例如,您可以指定将监视更改的命名空间

spring:
  application:
    name: event-reload
  cloud:
    kubernetes:
      reload:
        enabled: true
        strategy: shutdown
        mode: event
        namespaces:
          - my-namespace

此配置将使应用程序仅监视 my-namespace 命名空间中的更改。请注意,这将监视所有 configmaps/secrets(取决于您启用了哪个)。如果您希望更细粒度的策略,则可以启用“标签过滤”。首先,我们需要通过以下方式启用此支持: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 标签的 configmaps/secrets。

表 1. 属性
名称 类型 默认值 描述

spring.cloud.kubernetes.reload.enabled

布尔值

false

启用属性源的监控和配置重新加载

spring.cloud.kubernetes.reload.monitoring-config-maps

布尔值

true

允许监视 config maps 中的更改

spring.cloud.kubernetes.reload.monitoring-secrets

布尔值

false

允许监视 secrets 中的更改

spring.cloud.kubernetes.reload.strategy

枚举

refresh

触发重新加载时使用的策略(refreshrestart_contextshutdown

spring.cloud.kubernetes.reload.mode

枚举

event

指定如何侦听属性源中的更改(eventpolling

spring.cloud.kubernetes.reload.period

持续时间

15s

使用 polling 策略验证更改的周期

spring.cloud.kubernetes.reload.namespaces

字符串数组

应在其中监视更改的命名空间

spring.cloud.kubernetes.reload.enable-reload-filtering

字符串

为重新加载功能启用标签过滤

注意

  • 您不应在 config maps 或 secrets 中使用 spring.cloud.kubernetes.reload 下的属性。在运行时更改此类属性可能会导致意外结果。

  • 当您使用 refresh 级别时,删除属性或整个 config map 不会恢复 bean 的原始状态。