如何使用Kubernetes的configmap通過環境變數注入到pod裡

i042416發表於2018-11-20

在Kubernetes官網裡,有這樣一篇文章,提到了Kubernetes裡的一個最佳實踐就是把應用程式碼同配置資訊分開,一種方式就是使用Kubernetes 1.2裡引入的configmap概念。

如何使用Kubernetes的configmap通過環境變數注入到pod裡

https://kubernetes.io/blog/2016/04/configuration-management-with-containers/

configmap實際上就是一系列鍵值對,儲存於etcd裡。etcd的官網有這樣一句話:

etcd is a distributed key-value store designed to reliably and quickly preserve and provide access to critical data.

https://github.com/etcd-io/etcd/blob/master/Documentation/docs.md

etcd是一個高效能的分散式鍵值對儲存庫,用於儲存和訪問關鍵資料。

使用下面的命令列建立一個Kubernetes config map:

kubectl create configmap test-config --from-literal=test.type=unit --from-literal=test.exec=always

如何使用Kubernetes的configmap通過環境變數注入到pod裡

建立一個名為test-config的鍵值對,key為test.type,值為unit,key為test.exec, 值為always。

下面我打算建立一個pod,消費這個名為test-config的configmap。

建立一個內容如下的yaml檔案:

apiVersion: v1kind: Podmetadata:name: test-configmapspec:containers:- name: test-containerimage: alpine:3.8command: [ "/bin/sh", "-c", "env" ]env:- name: TEST_TYPEvalueFrom:configMapKeyRef:name: test-configkey: test.type- name: TEST_EXECvalueFrom:configMapKeyRef:name: test-configkey: test.execrestartPolicy: Never

這個yaml檔案定義的pod基於docker映象alpine,執行shell命令/bin/sh -c env檢視環境變數。

在env區域,我給該pod注入一個名為TEST_TYPE的環境變數,值從configMap鍵值對的鍵名稱為test.type的值中取。

如何使用Kubernetes的configmap通過環境變數注入到pod裡

kubectl create -f 建立這個pod:

如何使用Kubernetes的configmap通過環境變數注入到pod裡

使用命令kubectl logs test-configmap檢視這個pod執行生成的日誌,發現輸出的環境變數列表中,出現了TEST_TYPE=unit,這個TEST_TYPE是我在yaml檔案裡注入的環境變數名稱,而unit就來自configmap裡test-config的值unit。

如何使用Kubernetes的configmap通過環境變數注入到pod裡

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

如何使用Kubernetes的configmap通過環境變數注入到pod裡


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2220820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章