溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ConfigMap怎么使用

發(fā)布時(shí)間:2021-12-24 10:14:45 來(lái)源:億速云 閱讀:151 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“ConfigMap怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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

在本例中,我們將在Kubernetes中創(chuàng)建一個(gè)新的環(huán)境變量,并將其用于代碼中。在Java中,可以通過(guò)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怎么使用

通過(guò)kubectl create configmap 命令,我們創(chuàng)建了兩個(gè)環(huán)境變量:app.name 和 app.desc。

我們來(lái)了解一下這背后發(fā)生了什么。

ConfigMap怎么使用

現(xiàn)在注意數(shù)據(jù)部分,在數(shù)據(jù)部分下,你會(huì)找到鍵值對(duì)。從技術(shù)上來(lái)說(shuō),ConfigMap僅僅是鍵值存儲(chǔ)。屬性的名稱是鍵,屬性的值是值。應(yīng)用程序的代碼會(huì)要求你查找這些鍵值對(duì)。

為了在Java代碼中使用此環(huán)境變量,我們需要編寫以下代碼:

ConfigMap怎么使用

下面的代碼段定義了兩個(gè)K8s環(huán)境變量,分別為“ SPRING_BOOT_HELLO_WORLD_APP_NAME”和“ SPRING_BOOT_HELLO_WORLD_DESC”。這些變量將從ConfigMap app-env-config獲取值。需要重點(diǎn)關(guān)注的是鍵。

ConfigMap怎么使用

屬性配置文件可以在單個(gè)文件中保存很多個(gè)屬性,以在不同環(huán)境中運(yùn)行應(yīng)用程序。在Spring Boot應(yīng)用程序中,屬性保存在classpath下的application.properties文件中。我們來(lái)看一下打包在應(yīng)用程序jar包中的application.properties文件。

ConfigMap怎么使用

我們正在使用命令kubectl create configmap從單個(gè)文件或從多個(gè)文件創(chuàng)建ConfigMap。

現(xiàn)在讓我們查看完整的代碼。

ConfigMap怎么使用

ConfigMap怎么使用

將ConfigMap掛載為文件

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

第一步是從application.properties創(chuàng)建ConfigMap。讓我們了解如何在K8s中存儲(chǔ)此ConfigMap。

ConfigMap怎么使用

通過(guò)ConfigMap,我們將掛載application.properties文件到K8s集群中,并且可以在應(yīng)用程序中使用它。請(qǐng)注意,數(shù)據(jù)部分包含了application.properties的內(nèi)容,鍵是文件名。

現(xiàn)在,為了覆蓋默認(rèn)配置文件,我們需要(通過(guò)ConfigMap)將application.properties掛載到應(yīng)用程序的classpath中。Spring Boot通過(guò)提供不同的選項(xiàng)來(lái)提供這一功能。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

最簡(jiǎn)單,最好的方法是將application.properties掛載在“ / config”目錄中。

ConfigMap怎么使用

仔細(xì)檢查掛載路徑,請(qǐng)注意ConfigMap的名稱應(yīng)與我們?cè)谏厦鎰?chuàng)建的app-file-configmap完全相同,鍵為文件名。另外,請(qǐng)確保將volume mount配置的名稱更改為volume配置的名稱。

ConfigMap怎么使用

這段代碼說(shuō)明了如何在application.properties文件中定義屬性。如果使用Spring推薦的標(biāo)準(zhǔn)方法的話,這十分簡(jiǎn)單。具體而言,就是使用@Value 注釋將屬性值注入到變量中。

現(xiàn)在,我們可以繼續(xù)進(jìn)行ConfigMap示例應(yīng)用程序了。我們來(lái)看一下完整的代碼段。

ConfigMap怎么使用

讓我們創(chuàng)建一個(gè)Docker鏡像并將其上傳到Dockerhub。在本例中,鏡像名稱是k8s-springboot-helloworld-configmap—app。

以下是K8S pod配置文件:

ConfigMap怎么使用

現(xiàn)在我們使用NodePort服務(wù)類型創(chuàng)建服務(wù),以便可以從K8S集群外部使用Welcome服務(wù)。

ConfigMap怎么使用

現(xiàn)在,讓我們把這些更改應(yīng)用于K8S。

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

認(rèn)真觀察輸出,返回的字符串是:

ConfigMap怎么使用

同時(shí),檢查代碼中硬編碼的環(huán)境變量的默認(rèn)值,以及打包在jar中的application.properties的property默認(rèn)值。你發(fā)現(xiàn)從ConfigMap中獲取了環(huán)境變量和application.properties的值。

“ConfigMap怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI