配置文件之ConfigMap


一、ConfigMap概述

1)ConfigMap 是一種 API 對象,用來將非機密性的數據保存到鍵值對中。使用時, Pods 可以將其用作環境變量、命令行參數或者存儲卷中的配置文件。
2)ConfigMap 將您的環境配置信息和容器鏡像解耦,便於應用配置的修改,ConfigMap組件可以很好的幫助我們實現應用和配置分離,避免因為修改配置項而重新構建鏡像。
3)ConfigMap跟Secret很類似,但它可以更方便地處理不包含敏感信息的字符串。

二、創建configmap

[root@master-191 ~]# vim configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: you-config
  namespace: default
data:
  special.level: first
  special.type: happy

[root@master-191 ~]# kubectl create -f configmap.yaml 
configmap "you-config" created
[root@master-191 ~]# kubectl get cm
NAME         DATA      AGE
you-config   2         6s

三、引用configmap文件

1)變量方式

[root@master-191 ~]# vim config-var.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: you-config
              key: special.level
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: you-config
              key: special.type
  restartPolicy: Never

[root@master-191 ~]# kubectl create -f config-var.yaml 
pod "mypod" created
[root@master-191 ~]# kubectl get pod
NAME      READY     STATUS              RESTARTS   AGE
mypod     0/1       ContainerCreating   0          3s
[root@master-191 ~]# kubectl get pod
No resources found, use --show-all to see completed objects.
[root@master-191 ~]# kubectl logs -f mypod
first happy

2)volume掛載方式
ConfigMap 支持同一個目錄下掛載多個 key 和多個目錄。例如下面將 special.level 和 special.type 掛載到 / etc/config 下。並且將 special.how 同時掛載到 / etc/config2 下。

[root@master-191 ~]# vim config-vol.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: qing-pod
spec:
  containers:
    - name: test-container
      image: busybox
      command: ["/bin/sh","-c","sleep 36000"]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
      - name: config-volume2
        mountPath: /etc/config2
  volumes:
    - name: config-volume
      configMap:
        name: you-config
        items:
        - key: special.level
          path: keys/special.level
        - key: special.type
          path: keys/special.type
    - name: config-volume2
      configMap:
        name: you-config
        items:
        - key: special.level
          path: keys/special.level
  restartPolicy: Never

[root@master-191 ~]# kubectl create -f config-vol.yaml 
pod "qing-pod" created
[root@master-191 ~]# kubectl get pod
NAME       READY     STATUS              RESTARTS   AGE
qing-pod   1/1       Running             0          4s
[root@master-191 ~]# kubectl exec -it qing-pod sh
/ # ls /etc/
config       config2      group        hostname     hosts        localtime    mtab         network      passwd       resolv.conf  shadow
/ # ls /etc/config
keys
/ # ls /etc/config2
keys
/ # ls /etc/config/keys/
special.level  special.type
/ # ls /etc/config2/keys/
special.level
/ # cat /etc/config2/keys/special.level 
first/ # 

kubenetes官網:https://kubernetes.io/zh/docs
kubenetes社區:https://www.kubernetes.org.cn
kuboard.cn官網:https://kuboard.cn/learning


免責聲明!

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



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