创建ConfigMap细分的话有5种形式:
- 基于目录创建
- 基于文件创建
- 基于环境变量创建
- 基于literal创建
- 基于yaml文件创建
不过最终数据都是以键值对的形式进行保存的。
一、基于目录创建¶
在实际使用时,大部分都是基于单个文件创建ConfigMap的,然后挂载至某个资源文件供其Pod使用。
1.创建工作目录
[root@k8s-master01 ~]# mkdir -p configmap/conf
2.编写配置文件
[root@k8s-master01 ~]# vim configmap/conf/game.conf
lives=3
secret.code=true
[root@k8s-master01 ~]# vim configmap/conf/game2.conf
color.good=purple
user=tomcat
3.创建ConfigMap,其中--from-file参数用于指定文件夹
[root@k8s-master01 ~]# kubectl create cm cmfromdir --from-file=/root/configmap/conf/
4.验证
[root@k8s-master01 ~]# kubectl get cm
NAME DATA AGE
cmfromdir 2 46s
kube-root-ca.crt 1 25h
[root@k8s-master01 ~]# kubectl get cm cmfromdir -oyaml
apiVersion: v1
data:
game.conf: |
lives=3
secret.code=true
game2.conf: |
color.good=purple
user=tomcat
kind: ConfigMap
metadata:
creationTimestamp: "2022-12-03T08:14:29Z"
name: cmfromdir
namespace: default
resourceVersion: "32887"
uid: 8ad038d1-b370-4f34-bbb4-3a1c9537027f
[root@k8s-master01 ~]# kubectl describe cm cmfromdir
Name: cmfromdir
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.conf:
----
lives=3
secret.code=true
game2.conf:
----
color.good=purple
user=tomcat
BinaryData
====
Events: <none>
二、基于文件创建¶
1.创建工作目录
[root@k8s-master01 ~]# mkdir -p configmap/conf
2.编写配置文件
[root@k8s-master01 ~]# vim configmap/conf/redis.conf
Password=123
3.创建ConfigMap,,其中--from-file参数用于指定文件
[root@k8s-master01 ~]# kubectl create cm cmfromfile --from-file=/root/configmap/conf/redis.conf
拓展(不常用,下面不做演示):创建ConfigMap,使用--from-file参数用于指定文件的同时。自定义文件名
# 创建cm的时候自定义文件名为redis-test.conf,这里redis-test.conf只需要写个文件名就行,不需要写绝对路径
kubectl create cm cmfromfile --from-file=redis-test.conf =/root/configmap/conf/redis.conf
4.验证
[root@k8s-master01 ~]# kubectl get cm
NAME DATA AGE
cmfromdir 2 7m18s
cmfromfile 1 2m21s
kube-root-ca.crt 1 25h
[root@k8s-master01 ~]# kubectl get cm cmfromfile -oyaml
apiVersion: v1
data:
redis.conf: |
Password=123
kind: ConfigMap
metadata:
creationTimestamp: "2022-12-03T08:19:26Z"
name: cmfromfile
namespace: default
resourceVersion: "33521"
uid: acf5f51a-5cd8-413e-bf81-14a779b2f2fa
[root@k8s-master01 ~]# kubectl describe cm cmfromfile
Name: cmfromfile
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
redis.conf:
----
Password=123
BinaryData
====
Events: <none>
三、基于环境变量创建¶
1.创建工作目录
[root@k8s-master01 ~]# mkdir -p configmap/conf
2.编写配置文件
[root@k8s-master01 ~]# vim configmap/conf/game.conf
lives=3
secret.code=true
3.创建ConfigMap
[root@k8s-master01 conf]# kubectl create cm gameenvcm --from-env-file=/root/configmap/conf/game.conf
注意:如果使用--from-env-file多次传递参数以从多个数据源创建ConfigMap,仅最后一个ENV生效(1.23以上版本支持多个--from-env-file参数)。
4.验证
[root@k8s-master01 conf]# kubectl get cm
NAME DATA AGE
cmfromdir 2 25m
cmfromfile 1 20m
cmspecialname 1 10m
cmspecialname2 2 7m51s
gameenvcm 2 11s
kube-root-ca.crt 1 26h
[root@k8s-master01 conf]# kubectl get cm gameenvcm -oyaml
apiVersion: v1
data:
lives: "3"
secret.code: "true"
kind: ConfigMap
metadata:
creationTimestamp: "2022-12-03T08:39:30Z"
name: gameenvcm
namespace: default
resourceVersion: "36100"
uid: 62346419-855c-48de-8f78-9b17bb5da665
[root@k8s-master01 ~]# kubectl describe cm gameenvcm
Name: gameenvcm
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
lives:
----
3
secret.code:
----
true
BinaryData
====
Events: <none>