5.1.k8s.ConfigMap


ConfigMap

ConfigMap用於保存配置數據的鍵值對,可用來保存單個屬性,或配置文件

#ConfigMap創建

使用yaml文件創建ConfigMap

#cm-demo.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: cm-demo
  namespace: default
data:
  data.1: hello
  data.2: world
  config: |
    property.1=value-1
    property.2=value-2
#創建
kubectl create -f cm-demo.yaml.yaml
#查看
kubectl get cm cm-demo -o yaml

從文件、目錄創建ConfigMap

#創建目錄和文件
mkdir testcm
echo -e "host=127.0.0.1\nport=3306" >testcm/mysql.conf
echo -e "host=127.0.0.1\nport=6379" >testcm/redis.conf
ls -l  testcm
cat testcm/mysql.conf
cat testcm/redis.conf
#使用from-file 從目錄testcm 創建ConfigMap 名稱為cm-demo1
kubectl create configmap cm-demo1 --from-file=testcm
#查看cm
#kubectl get configmap
kubectl get cm
#查看詳情
kubectl describe configmap cm-demo1
kubectl get configmap cm-demo1 -o yaml

key-value字符串創建ConfigMap

#通過--from-literal參數,從字符串創建ConfigMap
kubectl create configmap cm-demo2  \
--from-literal=db.host=localhost --from-literal=db.port=3306
#查看
kubectl get configmap cm-demo2 -o yaml

kubectl get cm
kubectl delete cm cm-demo3

#ConfigMap使用

ConfigMap在Pod使用方式: 環境變量、命令行參數、數據卷Volume
ConfigMap 掛載的 Env 不會同步更新

env方式掛載 (環境變量、命令行參數使用)

# cm1-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: cm1-pod
spec:
  containers:
    - name: cm1
      image: busybox:uclibc
      command: [ "/bin/sh", "-c", "env" ]
      #command: [ "/bin/sh", "-c", "echo $(DB_HOST) $(DB_PORT)" ] #命令行參數
      env:
        - name: DB_HOST
          valueFrom:
            configMapKeyRef:
              name: cm-demo2
              key: db.host
        - name: DB_PORT
          valueFrom:
            configMapKeyRef:
              name: cm-demo2
              key: db.port
      envFrom:
        - configMapRef:
            name: cm-demo1
  restartPolicy: Never
#創建
kubectl create -f cm1-pod.yaml
#查看
kubectl logs cm1-pod

Volume方式掛載

#cm2-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: cm2-pod
spec:
  containers:
    - name: cm2
      image: busybox:uclibc
      command: [ "/bin/sh", "-c", "cat /test/redis.conf" ]
      volumeMounts:
      - name: config-volume
        mountPath: /test
  volumes:
    - name: config-volume
      configMap:
        name: cm-demo1
  restartPolicy: Never
#創建
kubectl create -f cm2-pod.yaml
#查看
kubectl logs cm2-pod

清理demo

kubectl delete -f cm1-pod.yaml
kubectl delete -f cm2-pod.yaml
kubectl delete cm cm-demo
kubectl delete cm cm-demo1
kubectl delete cm cm-demo2

參考https://www.qikqiak.com/k8s-book/docs/28.ConfigMap.html


Blog地址 https://www.cnblogs.com/elvi/p/11755789.html
本文git地址 https://gitee.com/almi/k8s/tree/master/notes


免責聲明!

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



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