一:簡(jiǎn)介很多生產(chǎn)環(huán)境中的應(yīng)用程序配置較為復(fù)雜,可能需要多個(gè)config文件、命令行參數(shù)和環(huán)境變量的組合。使用容器部署時(shí),把配置應(yīng)該從應(yīng)用程序鏡像中解耦出來(lái),以保證鏡像的可移植性。
ConfigMap是用來(lái)存儲(chǔ)配置文件的kubernetes資源對(duì)象,所有的配置內(nèi)容都存儲(chǔ)在etcd中。ConfigMap讓我們能夠從容器鏡像中把配置的詳細(xì)信息給解耦出來(lái)。通過(guò)ConfigMap我們能夠把配置以key-value對(duì)的形式傳遞到container或者別的系統(tǒng)組件(比如Controller)里面。
二:ConfigMap的創(chuàng)建方式1.From Literal Values 可以用kubectl create來(lái)創(chuàng)建一個(gè)ConfigMap,然后通過(guò)kubectl get來(lái)獲取
-
# Create the ConfigMap
-
$ kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
-
configmap"my-config" created
-
-
# Get the ConfigMap Details for my-config
-
$ kubectl get configmaps my-config -o yaml
-
apiVersion: v1
-
data:
-
key1: value1
-
key2: value2
-
kind: ConfigMap
-
metadata:
-
creationTimestamp: 2017-05-31T07:21:55Z
-
name: my-config
-
namespace: default
-
resourceVersion: "241345"
-
selfLink: /api/v1/namespaces/default/configmaps/my-config
-
uid: d35f0a3d-45d1-11e7-9e62-080027a46057
2.From Configuration File 直接通過(guò)配置文件來(lái)創(chuàng)建
-
apiVersion: v1
-
kind: ConfigMap
-
metadata:
-
name: special-config
-
namespace: default
-
data:
-
special.how: very
-
apiVersion: v1
-
kind: ConfigMap
-
metadata:
-
name: env-config
-
namespace: default
-
data:
-
log_level: INFO
3. 當(dāng)前目錄下包含如果有配置文件donkey.properties 可以通過(guò)kubectl命令創(chuàng)建一個(gè)包含該文件內(nèi)容的ConfigMap
kubectl create configmap donkey.properties --from-file=donkey.properties
三:ConfigMap的使用方式1.Pod 通過(guò)env使用ConfigMap定義環(huán)境變量
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: dapi-test-pod
-
spec:
-
containers:
-
- name: test-container
-
image: gcr.io/google_containers/busybox
-
command: ["/bin/sh", "-c", "env" ]
-
env:
-
- name: SPECIAL_LEVEL_KEY
-
valueFrom:
-
configMapKeyRef:
-
name: special-config
-
key: special.how
-
- name: LOG_LEVEL
-
valueFrom:
-
configMapKeyRef:
-
name: env-config
-
key: log_level
-
restartPolicy: Never
從Kubernetes V1.6 開(kāi)始,引入一個(gè)新的字段envFrom,實(shí)現(xiàn)在Pod環(huán)境內(nèi)將ConfigMap中所以定義的key=value自動(dòng)生成環(huán)境變量:
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: dapi-test-pod
-
spec:
-
containers:
-
- name: test-container
-
image: gcr.io/google_containers/busybox
-
command: [ "/bin/sh", "-c", "env" ]
-
envFrom:
-
- configMapRef:
-
name: special-config
-
restartPolicy: Never
2.使用ConfigMap設(shè)置容器啟動(dòng)命令的啟動(dòng)參數(shù)
-
apiVersion: v1
-
kind: Pod
-
metadata:
-
name: dapi-test-pod
-
spec:
-
containers:
-
- name: test-container
-
image: k8s.gcr.io/busybox
-
command: ["/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
-
env:
-
- name: SPECIAL_LEVEL_KEY
-
valueFrom:
-
configMapKeyRef:
-
name: special-config
-
key: SPECIAL_LEVEL
-
- name: SPECIAL_TYPE_KEY
-
valueFrom:
-
configMapKeyRef:
-
name: special-config
-
key: SPECIAL_TYPE
-
restartPolicy: Never
3.在存儲(chǔ)卷中使用ConfigMap
-
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: 120.79.156.135/desktop/busybox:latest
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
volumeMounts:
- name: donkeyconfig
mountPath: /configfiles
volumes:
- name: donkeyconfig
configMap:
name: donkey.properties
items:
- key: donkey.properties
path: donkey.properties
restartPolicy: Always
imagePullSecrets:
- name: registry-secret
四:使用ConfigMap的限制條件
1.ConfigMap必須在Pod之前創(chuàng)建
2.ConfigMap受Namespace限制,只有處于相同Namespaces中的Pod可以引用它
3.ConfigMap 中的配額管理還未能實(shí)現(xiàn)
4.kubelet只支持可以被API Server管理的Pod使用ConfigMap
新聞名稱(chēng):kubernetes實(shí)踐之三十五:Pod配置管理ConfigMap
新聞來(lái)源:http://sd-ha.com/article48/pepghp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、做網(wǎng)站、建站公司、微信公眾號(hào)、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)