K8S基礎學習-ConfigMap(引入環境變量和引入配置文件)


應用部署的一個最佳實踐是將應用所需的配置信息與程序進行分離。在K8S中提供了這種統一的集群配置管理方案--ConfigMap。 類似於集成了環境配置清單。生成相應的應用時在yaml中引入該ConfigMap。起到統一分配配置信息的作用。

ConfigMap以一個或多個key:value的形式保存在文件中。

即可以通過yaml文件創建也可以通過kubectl命令行創建。

本人習慣於yaml,下面以yaml方式為例做ConfigMap實驗。

apiVersion: v1
kind: ConfigMap
metadata:
name: cm-appvars
data:
apploglevel: info
appdatadir: /var/data

生成ConfigMap: kubectl create -f cm-appvars.yaml

生成后可以通過kubectl get configmap和describe 觀察現象。

之后我們創建一個POD,將ConfigMap中兩個環境變量引入POD並顯示。

 

kubectl create -f 生成pod。pod執行后會退出並且不自動重啟。

通過kubectl logs cm-test-pod可以看到:

APPDATADIR=/var/data
APPLOGLEVEL=info。

pod成功引入ConfigMap。

 

接下來來實驗另一種模式:volumeMount。原理是ConfigMap中包含了KEY:文件內容,再通過pod配置將ConfigMap內容生成文件保存在pod中,同時需要掛載相應的文件夾。

apiVersion: v1
kind: ConfigMap
metadata:
name: cm-serverxml
data:
key-serverxml: “123456”
key-loggingproperties: “1234567”

生成ConfigMap:kubectl create -f cm-appconfigfiles.yaml

在Pod“cm-test-app”的定義中,將ConfigMap“cm-appconfigfiles”中的內容以文件的形式mount到容器內部的/configfiles目錄中去。

備注:上面的ConfigMap中name選項指的是你ConfigMap中matedata的name,不是文件名。

而后生成pod。

進入pod: kubectl exec -ti cm-test-app -- bash

cd /configfiles/可查看到configmap里的文件內容已經生成了相應的文件。配置文件注入成功。

以下注意事項:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM