ConfigMap在kubernetes中的應(yīng)用-創(chuàng)新互聯(lián)

ConfigMap概念

在生產(chǎn)環(huán)境中經(jīng)常會遇到需要修改配置文件的情況,傳統(tǒng)的修改方式不僅會影響到服務(wù)的正常運行,而且操作步驟也很繁瑣。為了解決這個問題,kubernetes項目從1.2版本引入了ConfigMap功能,用于將應(yīng)用的配置信息與程序的分離。這種方式不僅可以實現(xiàn)應(yīng)用程序被的復(fù)用,而且還可以通過不同的配置實現(xiàn)更靈活的功能。在創(chuàng)建容器時,用戶可以將應(yīng)用程序打包為容器鏡像后,通過環(huán)境變量或者外接掛載文件的方式進(jìn)行配置注入。

站在用戶的角度思考問題,與客戶深入溝通,找到珙縣網(wǎng)站設(shè)計與珙縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋珙縣地區(qū)。

ConfigMap是以key:value的形式保存配置項,既可以用于表示一個變量的值(例如config=info),也可以用于表示一個完整配置文件的內(nèi)容(例如server.xml=<?xml…>…)。

如果你對Spring Cloud的生態(tài)很熟悉,那么接下來你會發(fā)現(xiàn)ConfigMap與Spring Cloud server十分類似。這里有兩種使用ConfigMap的方法:

  1. 將ConfigMap作為一種環(huán)境變量

  2. 將ConfigMap掛載為文件

讓我們開始進(jìn)行實踐!我們將使用一個簡單的應(yīng)用程序,基于Spring Boot、Docker和Kubernetes進(jìn)行演示

將ConfigMap作為一種環(huán)境變量

在本例中,我們將在Kubernetes中創(chuàng)建一個新的環(huán)境變量,并將其用于代碼中。在Java中,可以通過System.getenv(String) API在代碼中使用環(huán)境變量。在常規(guī)Java應(yīng)用程序中,可以在J2EE應(yīng)用程序容器(如Oracle WLS或IBM WAS)中設(shè)置環(huán)境變量,也可以在OS中設(shè)置環(huán)境變量。然而,在Kubernetes中情況并不相同。要使用環(huán)境變量,我們必須根據(jù)literal創(chuàng)建配置映射。
 
ConfigMap在kubernetes中的應(yīng)用
 
通過kubectl create configmap命令,我們創(chuàng)建了兩個環(huán)境變量:app.name 和 app.desc。

我們來了解一下這背后發(fā)生了什么。
 
ConfigMap在kubernetes中的應(yīng)用
 
現(xiàn)在注意數(shù)據(jù)部分,在數(shù)據(jù)部分下,你會找到鍵值對。從技術(shù)上來說,ConfigMap僅僅是鍵值存儲。屬性的名稱是鍵,屬性的值是值。應(yīng)用程序的代碼會要求你查找這些鍵值對。

為了在Java代碼中使用此環(huán)境變量,我們需要編寫以下代碼:
 
ConfigMap在kubernetes中的應(yīng)用
 
下面的代碼段定義了兩個K8s環(huán)境變量,分別為“ SPRING_BOOT_HELLO_WORLD_APP_NAME”和“ SPRING_BOOT_HELLO_WORLD_DESC”。這些變量將從ConfigMap app-env-config獲取值。需要重點關(guān)注的是鍵。
 
ConfigMap在kubernetes中的應(yīng)用
 
屬性配置文件可以在單個文件中保存很多個屬性,以在不同環(huán)境中運行應(yīng)用程序。在Spring Boot應(yīng)用程序中,屬性保存在classpath下的application.properties文件中。我們來看一下打包在應(yīng)用程序jar包中的application.properties文件。
 
ConfigMap在kubernetes中的應(yīng)用
 
我們正在使用命令kubectl create configmap從單個文件或從多個文件創(chuàng)建ConfigMap。

現(xiàn)在讓我們查看完整的代碼
ConfigMap在kubernetes中的應(yīng)用

ConfigMap在kubernetes中的應(yīng)用

將ConfigMap掛載為文件

在本節(jié)中,我將說明如何使用ConfigMap掛載文件以外部化配置。在此示例中,我將使用ConfigMap來外部化application.properties文件。即使默認(rèn)文件打包在jar中,也位于src / main / resources下。簡單來說,我們將通過ConfigMap所提供的文件來覆蓋默認(rèn)文件。

第一步是從application.properties創(chuàng)建ConfigMap。讓我們了解如何在K8s中存儲此ConfigMap
ConfigMap在kubernetes中的應(yīng)用
通過ConfigMap,我們將掛載application.properties文件到K8s集群中,并且可以在應(yīng)用程序中使用它。請注意,數(shù)據(jù)部分包含了application.properties的內(nèi)容,鍵是文件名。

現(xiàn)在,為了覆蓋默認(rèn)配置文件,我們需要(通過ConfigMap)將application.properties掛載到應(yīng)用程序的classpath中。Spring Boot通過提供不同的選項來提供這一功能。SpringApplication在以下位置從application.properties文件加載屬性,并將它們添加到Spring Environment

  • 當(dāng)前目錄的/config 子目錄

  • 當(dāng)前目錄

  • classpath / config包

  • The classpath root

如果你想了解更多信息,可以查閱官方文檔
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

最簡單,最好的方法是將application.properties掛載在“ / config”目錄中。
 
ConfigMap在kubernetes中的應(yīng)用
 
仔細(xì)檢查掛載路徑,請注意ConfigMap的名稱應(yīng)與我們在上面創(chuàng)建的app-file-configmap完全相同,鍵為文件名。另外,請確保將volume mount配置的名稱更改為volume配置的名稱
ConfigMap在kubernetes中的應(yīng)用
這段代碼說明了如何在application.properties文件中定義屬性。如果使用Spring推薦的標(biāo)準(zhǔn)方法的話,這十分簡單。具體而言,就是使用@Value 注釋將屬性值注入到變量中。

現(xiàn)在,我們可以繼續(xù)進(jìn)行ConfigMap示例應(yīng)用程序了。我們來看一下完整的代碼段。
 
ConfigMap在kubernetes中的應(yīng)用
 
讓我們創(chuàng)建一個Docker鏡像并將其上傳到Dockerhub。在本例中,鏡像名稱是k8s-springboot-helloworld-configmap—app。

以下是K8S pod配置文件:
 
ConfigMap在kubernetes中的應(yīng)用
 
現(xiàn)在我們使用NodePort服務(wù)類型創(chuàng)建服務(wù),以便可以從K8S集群外部使用Welcome服務(wù)。
 
ConfigMap在kubernetes中的應(yīng)用
 
現(xiàn)在,讓我們把這些更改應(yīng)用于K8S

導(dǎo)航到瀏覽器并訪問http://<minikube_ip>:<service_node_port>/welcome。在本例,應(yīng)該是http:// 192.168.99.100:30880/welcome

認(rèn)真觀察輸出,返回的字符串是:
 
ConfigMap在kubernetes中的應(yīng)用
 
同時,檢查代碼中硬編碼的環(huán)境變量的默認(rèn)值,以及打包在jar中的application.properties的property默認(rèn)值。你發(fā)現(xiàn)從ConfigMap中獲取了環(huán)境變量和application.properties的值。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章題目:ConfigMap在kubernetes中的應(yīng)用-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://muchs.cn/article32/dpjcpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站收錄、用戶體驗網(wǎng)站營銷、網(wǎng)站設(shè)計公司搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)