2023年7月6日发(作者:)
k8s--ConfigMapConfigMap顾名思义,是⽤于保存配置数据的键值对,可以⽤来保存单个属性,也可以保存配置⽂件。Secret可以为Pod提供密码、Token、私钥等敏感数据;对于⼀些⾮敏感数据,⽐如应⽤的配置信息,则可以使⽤ConfigMap。ConfigMap的创建和使⽤⽅式与Secret⾮常类似,主要的不同是以明⽂的形式存放ConfigMap的创建可以使⽤
kubectl create configmap 从⽂件、⽬录或者 key-value 字符串创建等创建 ConfigMap。也可以通过
kubectl create -f从描述⽂件创建。从key-value字符串创建$ kubectl create configmap special-config --from-literal==veryconfigmap "special-config" created$ kubectl get configmap special-config -o go-template='{{.data}}'map[:very]上⾯的命令创建了⼀个名为special-config,拥有⼀条key为,value为very的键值对数据。从env⽂件创建$ echo -e "a=bnc=d" | tee =bc=d$ kubectl create configmap special-config --from-env-file=figmap "special-config" created$ kubectl get configmap special-config -o go-template='{{.data}}'map[a:b c:d]上⾯的命令从⼀个env⽂件读取键值对,然后存⼊⼀个名为special-config的ConfigMap中。从⽬录创建$ mkdir config$ echo a>config/a$ echo b>config/b$ kubectl create configmap special-config --from-file=config/configmap "special-config" created$ kubectl get configmap special-config -o go-template='{{.data}}'map[a:a b:b]上⾯的命令读取config⽬录下的所有⽂件,以⽂件名为key,⽂件内容为value,存⼊名为special-config的ConfigMap中。根据yaml描述⽂件创建apiVersion: v1kind: ConfigMapmetadata: name: special-configdata: : very : charm$ kubectl create -f nfigmap "special-config" createdConfigMap的使⽤Pod可以通过三种⽅式来使⽤ConfigMap,分别为:将ConfigMap中的数据设置为环境变量将ConfigMap中的数据设置为命令⾏参数使⽤Volume将ConfigMap作为⽂件或⽬录挂载注意!!ConfigMap必须在Pod使⽤它之前创建使⽤envFrom时,将会⾃动忽略⽆效的键Pod只能使⽤同⼀个命名空间的ConfigMap⽤作环境变量⾸先创建两个ConfigMap,分别名为special-config和env-config:$ kubectl create configmap special-config --from-literal==very --from-literal==charm$ kubectl create configmap env-config --from-literal=log_level=INFO然后以环境变量⽅式引⽤:apiVersion: v1kind: Podmetadata: name: test-podspec: containers: - name: test-container image: /google_containers/busybox command: [ "/bin/sh", "-c", "env" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: envFrom: - configMapRef: name: env-config restartPolicy: Never当pod运⾏结束后,它的输出如下:SPECIAL_LEVEL_KEY=verySPECIAL_TYPE_KEY=charmlog_level=INFO⽤作命令⾏参数将ConfigMap⽤作命令⾏参数时,需要先把ConfigMap的数据保存在环境变量中,然后通过$(VAR_NAME)的⽅式引⽤环境变量。apiVersion: v1kind: Podmetadata: name: dapi-test-podspec: containers: - name: test-container image: /google_containers/busybox command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: restartPolicy: Never当pod运⾏结束后,它的输出如下:very charm使⽤volume将ConfigMap作为⽂件或⽬录直接挂载将创建的ConfigMap直接挂载⾄Pod的/etc/config⽬录下,其中每⼀个key-value键值对都会⽣成⼀个⽂件,key为⽂件名,value为内容。apiVersion: v1kind: Podmetadata: name: vol-test-podspec: containers: - name: test-container image: /google_containers/busybox command: [ "/bin/sh", "-c", "cat /etc/config/" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config restartPolicy: Never当Pod结束后会输出:Never将创建的ConfigMap中这个key挂载到/etc/config⽬录下的⼀个相对路径/keys/。如果存在同名⽂件,直接覆盖。其他的key不挂载。apiVersion: v1kind: Podmetadata: name: dapi-test-podspec: containers: - name: test-container image: /google_containers/busybox command: [ "/bin/sh","-c","cat /etc/config/keys/" ] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config items: - key: path: keys/ restartPolicy: Never当Pod结束后会输出:Never在⼀般情况下 configmap 挂载⽂件时,会先覆盖掉挂载⽬录,然后再将 congfigmap 中的内容作为⽂件挂载进⾏。如果想不对原来的⽂件夹下的⽂件造成覆盖,只是将 configmap 中的每个 key,按照⽂件的⽅式挂载到⽬录下,可以使⽤ subpath 参数。apiVersion: v1kind: Podmetadata: name: dapi-test-podspec: containers: - name: test-container image: nginx command: ["/bin/sh","-c","sleep 36000"] volumeMounts: - name: config-volume mountPath: /etc/nginx/ subPath: volumes: - name: config-volume configMap: name: special-config items: - key: path: restartPolicy: Neverroot@dapi-test-pod:/# ls /etc/nginx/conf.d fastcgi_params koi-utf koi-win modules scgi_params uwsgi_params win-utfroot@dapi-test-pod:/# cat /etc/nginx/er
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688593592a153177.html
评论列表(0条)