W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
某些應(yīng)用程序可能需要檢測外部屬性源上的更改并更新其內(nèi)部狀態(tài)以反映新配置。當(dāng)相關(guān)的ConfigMap
或Secret
發(fā)生更改時,Spring Cloud Kubernetes的重載功能能夠觸發(fā)應(yīng)用程序重載。
默認情況下,此功能處于禁用狀態(tài)。您可以使用spring.cloud.kubernetes.reload.enabled=true
配置屬性(例如,在application.properties
文件中)啟用它。
支持以下級別的重載(通過設(shè)置spring.cloud.kubernetes.reload.strategy
屬性):* refresh
(默認):僅重載用@ConfigurationProperties
或@RefreshScope
注釋的配置beans。
此重新加載級別利用了Spring Cloud上下文的刷新功能。* restart_context
:整個Spring ApplicationContext
已正常重啟。用新配置重新創(chuàng)建Beans。* shutdown
:Spring ApplicationContext
已關(guān)閉,以激活容器的重啟。
使用此級別時,請確保所有非守護程序線程的生命周期都綁定到ApplicationContext
,并且已將復(fù)制控制器或副本集配置為重新啟動Pod。
假設(shè)使用默認設(shè)置(refresh
模式)啟用了重新加載功能,則當(dāng)配置映射更改時,將刷新以下bean:
@Configuration @ConfigurationProperties(prefix = "bean") public class MyConfig { private String message = "a message that can be changed live"; // getter and setters }
要查看更改是否有效發(fā)生,您可以創(chuàng)建另一個bean來定期打印消息,如下所示
@Component public class MyBean { @Autowired private MyConfig config; @Scheduled(fixedDelay = 5000) public void hello() { System.out.println("The message is: " + config.getMessage()); } }
您可以使用ConfigMap
來更改應(yīng)用程序打印的消息,如下所示:
apiVersion: v1 kind: ConfigMap metadata: name: reload-example data: application.properties: |- bean.message=Hello World!
與容器關(guān)聯(lián)的ConfigMap
中名為bean.message
的屬性的任何更改都會反映在輸出中。更一般而言,將檢測與屬性相關(guān)聯(lián)的更改,這些更改的前綴為@ConfigurationProperties
注釋的prefix
字段定義的值。
本章前面已經(jīng)說明了將ConfigMap
與pod關(guān)聯(lián)。
完整的示例可在中找到spring-cloud-kubernetes-reload-example
。
重新加載功能支持兩種操作模式:*事件(默認):使用Kubernetes API(web套接字)監(jiān)視配置映射或機密的更改。任何事件都會對配置進行重新檢查,并在發(fā)生更改的情況下重新加載。服務(wù)帳戶上的view
角色是必需的,以便偵聽配置映射更改。秘密需要更高級別的角色(例如edit
)(默認情況下,不監(jiān)視秘密)。
*輪詢:從配置上通過配置映射和機密重新創(chuàng)建配置,以查看配置是否已更改。您可以使用spring.cloud.kubernetes.reload.period
屬性來配置輪詢時間,默認為15秒。它需要與受監(jiān)視屬性源相同的角色。例如,這意味著對文件掛載的秘密源使用輪詢不需要特定的特權(quán)。
表140.3。Properties:
名稱 | 類型 | 默認 | 描述 |
---|---|---|---|
|
|
|
使用 |
|
|
|
啟用監(jiān)視屬性源和配置重載 |
|
|
|
允許監(jiān)視配置映射中的更改 |
|
|
|
允許監(jiān)視機密更改 |
spring.cloud.kubernetes.reload.strategy` |
|
|
觸發(fā)重新加載時使用的策略( |
|
|
|
指定如何偵聽屬性源( |
注意:*請勿在配置映射或機密中使用spring.cloud.kubernetes.reload
下的屬性。在運行時更改此類屬性可能會導(dǎo)致意外結(jié)果。*使用refresh
級別時,刪除屬性或整個配置圖不會恢復(fù)beans的原始狀態(tài)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: