如何使用Kubernetes的configmap經過環境變量注入到pod裏

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

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

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

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

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

etcd是一個高性能的分佈式鍵值對存儲庫,用於存儲和訪問關鍵數據。分佈式

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

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

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

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

建立一個內容以下的yaml文件:

apiVersion: v1

kind: Pod

metadata:

name: test-configmap

spec:

containers:

- name: test-container

image: alpine:3.8

command: [ "/bin/sh", "-c", "env" ]

env:

- name: TEST_TYPE

valueFrom:

configMapKeyRef:

name: test-config

key: test.type

- name: TEST_EXEC

valueFrom:

configMapKeyRef:

name: test-config

key: test.exec

restartPolicy: Never

這個yaml文件定義的pod基於docker鏡像alpine,執行shell命令/bin/sh -c env查看環境變量。

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

kubectl create -f 建立這個pod:

使用命令kubectl logs test-configmap查看這個pod運行生成的日誌,發現輸出的環境變量列表中,出現了TEST_TYPE=unit,這個TEST_TYPE是我在yaml文件裏注入的環境變量名稱,而unit就來自configmap裏test-config的值unit。

相關文章
相關標籤/搜索