最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的教程

 更新時間:2020年09月05日 09:53:30   作者:南瓜慢說  
這篇文章主要介紹了Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

1 前言

歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!

Docker & Kubernetes相關文章:容器技術

之前介紹了Spring Cloud Config的用法,但對于Kubernetes應用,可能會需要讀取ConfigMap的配置,我們看看Springboot是如何方便地讀取ConfigMapSecret。

2 整合Spring Cloud Kubenetes

Spring Cloud Kubernetes提供了Spring Cloud應用與Kubernetes服務關聯(lián),我們也可以自己寫Java程序來獲取Kubernetes的特性,但Spring又為我們做了。

2.1 項目代碼

引入依賴:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
</dependency>

只需要Springboot WebSpring Cloud Kubernetes Config即可,很簡單。

Springboot啟動類:

@SpringBootApplication
public class ConfigMapMain {
  public static void main(String[] args) {
    SpringApplication.run(ConfigMapMain.class, args);
  }
}

準備一個EndPoint來展示所讀到的配置信息:

@RestController
public class PkslowController {
  @Value("${pkslow.age:0}")
  private Integer age;

  @Value("${pkslow.email:null}")
  private String email;

  @Value("${pkslow.webSite:null}")
  private String webSite;

  @Value("${pkslow.password:null}")
  private String password;

  @GetMapping("/pkslow")
  public Map<String, String> getConfig() {
    Map<String, String> map = new HashMap<>();
    map.put("age", age.toString());
    map.put("email", email);
    map.put("webSite", webSite);
    map.put("password", password);
    return map;
  }
}

默認是為空的,password是從Secret讀取,其它從ConfigMap讀取。

應用的配置文件如下:

server:
 port: 8080
spring:
 application:
  name: spring-cloud-kubernetes-configmap
 cloud:
  kubernetes:
   config:
    name: spring-cloud-kubernetes-configmap

這里的spring.cloud.kubernetes.config.name是重點,后續(xù)要通過它來找ConfigMap

加密密碼:

$ echo -n "pkslow-pass" | base64 
cGtzbG93LXBhc3M=

創(chuàng)建Kubernetes Secret

kind: Secret
apiVersion: v1
metadata:
 name: spring-cloud-kubernetes-secret
 namespace: default
data:
 pkslow.password: cGtzbG93LXBhc3M=
type: Opaque

ConfigMap的內(nèi)容如下:

kind: ConfigMap
apiVersion: v1
metadata:
 name: spring-cloud-kubernetes-configmap
 namespace: default
 labels:
  app: scdf-server
data:
 application.yaml: |-
  pkslow:
   age: 19
   email: admin@pkslow.com
   webSite: www.pkslow.com

要注意的是,這里的名字與前面配置的是一致的,都是spring-cloud-kubernetes-configmap

接著完成DockerfileK8s部署文件就可以了。注意要將Secret的值映射到環(huán)境變量:

env:
	- name: PKSLOW_PASSWORD
		valueFrom:
			secretKeyRef:
				name: spring-cloud-kubernetes-secret
				key: pkslow.password

2.2 啟動與測試

應用會在啟動時就去Kubernetes找相應的ConfigMapSecret

 .   ____          _            __ _ _

 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )

  '  |____| .__|_| |_|_| |_\__, | / / / /

 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::        (v2.2.5.RELEASE)

2020-08-25 00:13:17.374  INFO 7 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='composite-configmap', propertySources=[ConfigMapPropertySource {name='configmap.spring-cloud-kubernetes-configmap.default'}]}

訪問spring-cloud-kubernetes-configmap.localhost/pkslow,可以正確讀取配置,ConfigMapSecret的內(nèi)容都獲取到了:

3 自動刷新配置

3.1 原理介紹與代碼變更

我們需要在Web運行過程中修改配置并使配置生效,有多種模式。修改配置文件如下:

server:
 port: 8080
spring:
 application:
  name: spring-cloud-kubernetes-configmap
 cloud:
  kubernetes:
   config:
    name: spring-cloud-kubernetes-configmap
    namespace: default
   secrets:
    name: spring-cloud-kubernetes-secret
    namespace: default
    enabled: true
   reload:
    enabled: true
    monitoring-config-maps: true
    monitoring-secrets: true
    strategy: restart_context
    mode: event
management:
 endpoint:
  restart:
   enabled: true
 endpoints:
  web:
   exposure:
    include: restart

(1) spring.cloud.kubernetes.reload.enabled=true需要打開刷新功能;

(2) 加載策略strategy

  • refresh:只對特定的配置生效,有注解@ConfigurationProperties@RefreshScope。
  • restart_context:整個Spring Context會優(yōu)雅重啟,里面的所有配置都會重新加載。

需要打開actuator endpoint,所以要配置management.endpoint。還要增加依賴:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-actuator-autoconfigure</artifactId>
</dependency>

shutdown:重啟容器。

(3)模式mode

  • 事件Event:會通過k8s API監(jiān)控ConfigMap的變更,讀取配置并生效。
  • Polling:定期查看是否有變化,有變化則觸發(fā),默認為15秒。

3.2 測試

我們修改一下ConfigMap的配置,并更新到K8s

$ kubectl apply -f src/main/k8s/config.yaml 
configmap/spring-cloud-kubernetes-configmap configured

查看發(fā)現(xiàn)ageemail都修改了:

我們查看一下Pod的日志如下:

Springboot先是檢測到了ConfigMap有了變更,然后觸發(fā)Context重啟。

4 總結

Spring Cloud Kubernetes為我們提供了不少Spring Cloud整合Kubernetes的特性,可以引入使用。

到此這篇關于Springboot整合Spring Cloud Kubernetes讀取ConfigMap支持自動刷新配置的文章就介紹到這了,更多相關Springboot整合Spring Cloud Kubernetes內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java如何基于EasyExcel實現(xiàn)導入數(shù)據(jù)校驗并生成錯誤信息Excel

    Java如何基于EasyExcel實現(xiàn)導入數(shù)據(jù)校驗并生成錯誤信息Excel

    這篇文章主要介紹了Java如何基于EasyExcel實現(xiàn)導入數(shù)據(jù)校驗并生成錯誤信息Excel,為了優(yōu)化項目中的文件導入功能,考慮構建一個基于EasyExcel的通用Excel導入框架,主要解決導入數(shù)據(jù)的校驗問題,避免業(yè)務代碼中堆積大量校驗邏輯,需要的朋友可以參考下
    2024-09-09
  • Spring?Boot?條件注解詳情

    Spring?Boot?條件注解詳情

    這篇文章主要介紹了Spring?Boot?條件注解詳情,SpringBoot條件注解@Conditional,可用于根據(jù)某個特定的條件來判斷是否需要創(chuàng)建某個特定的Bean,下文更多相關介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Java實現(xiàn)圖片上傳到服務器并把上傳的圖片讀取出來

    Java實現(xiàn)圖片上傳到服務器并把上傳的圖片讀取出來

    在各大網(wǎng)站上都可以實現(xiàn)上傳頭像功能,可以選擇自己喜歡的圖片做頭像,從本地上傳,今天小編給大家分享Java實現(xiàn)圖片上傳到服務器并把上傳的圖片讀取出來,需要的朋友參考下
    2017-02-02
  • Java冒泡排序(Bubble Sort)實例講解

    Java冒泡排序(Bubble Sort)實例講解

    冒泡排序的原理:假設要求的數(shù)組是正序,兩兩進行比較,如果前一個書比后一個數(shù)小,位置不變。如果前一個數(shù)比后一個數(shù)大,位置互換,再跟后一個數(shù)進行比較,直到最后。就是逐步把大數(shù)送到最后,下面來個實例給大家看看
    2013-11-11
  • java中ThreadLocal和ThreadLocalMap淺析

    java中ThreadLocal和ThreadLocalMap淺析

    這篇文章主要介紹了java中ThreadLocal和ThreadLocalMap淺析,ThreadLocal類用來設置線程私有變量?本身不儲存值?主要提供自身引用?和?操作ThreadLocalMap?屬性值得方法,需要的朋友可以參考下
    2023-09-09
  • 一篇文章帶你入門java注解

    一篇文章帶你入門java注解

    這篇文章主要介紹了Java注解詳細介紹,本文講解了Java注解是什么、Java注解基礎知識、Java注解類型、定義Java注解類型的注意事項等內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 徹底理解Java中this 關鍵字

    徹底理解Java中this 關鍵字

    這篇文章主要介紹了徹底理解Java中this 關鍵字的相關資料,非常不錯,具有參考價值,需要的朋友可以參考下
    2016-05-05
  • 利用Java實現(xiàn)和可被K整除的子數(shù)組完整實例

    利用Java實現(xiàn)和可被K整除的子數(shù)組完整實例

    這篇文章主要給大家介紹了關于利用Java實現(xiàn)和可被K整除的子數(shù)組的相關資料,這道題來自力扣,通過學習這道題的解題思路以及代碼對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Springboot內(nèi)置tomcat配置虛擬路徑過程解析

    Springboot內(nèi)置tomcat配置虛擬路徑過程解析

    這篇文章主要介紹了Springboot內(nèi)置tomcat配置虛擬路徑過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • java基本教程之常用的實現(xiàn)多線程的兩種方式 java多線程教程

    java基本教程之常用的實現(xiàn)多線程的兩種方式 java多線程教程

    下面開始學習“常用的實現(xiàn)多線程的2種方式”:Thread 和 Runnable。之所以說是常用的,是因為通過還可以通過java.util.concurrent包中的線程池來實現(xiàn)多線程
    2014-01-01

最新評論

九龙城区| 晋中市| 美姑县| 诸暨市| 城口县| 丘北县| 都兰县| 永平县| 札达县| 和硕县| 南投市| 楚雄市| 天全县| 龙南县| 通州市| 贺兰县| 太康县| 奉化市| 隆德县| 驻马店市| 闽侯县| 吕梁市| 泸西县| 巢湖市| 精河县| 大余县| 噶尔县| 龙江县| 岑溪市| 门头沟区| 浦北县| 台北市| 周宁县| 城口县| 突泉县| 宁津县| 金昌市| 三门县| 和平县| 新闻| 连江县|