重新載入命名空間與標籤篩選

預設情況下,將使用命名空間解析中概述的步驟選擇的命名空間,來監聽 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

Boolean

false

啟用屬性來源和組態重新載入的監控

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

Boolean

true

允許監控 config maps 中的變更

spring.cloud.kubernetes.reload.monitoring-secrets

Boolean

false

允許監控 secrets 中的變更

spring.cloud.kubernetes.reload.strategy

Enum

refresh

觸發重新載入時使用的策略 (refreshrestart_contextshutdown)

spring.cloud.kubernetes.reload.mode

Enum

event

指定如何監聽屬性來源中的變更 (eventpolling)

spring.cloud.kubernetes.reload.period

Duration

15s

使用 polling 策略時驗證變更的週期

spring.cloud.kubernetes.reload.namespaces

String[]

我們應該在其中監看變更的命名空間

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

String

為重新載入功能啟用標籤篩選

注意事項

  • 您不應在 config maps 或 secrets 中使用 spring.cloud.kubernetes.reload 下的屬性。在執行階段變更此類屬性可能會導致意外結果。

  • 當您使用 refresh 層級時,刪除屬性或整個 config map 不會還原 Bean 的原始狀態。