K8S之configmap

一般使用这个存储配置文件
我们以redis的配置文件,存储为一个configmap
我们新建一个redis.properties文件,内容如下:

redis.host=127.0.0.1
redis.port=6379
redis.password=123456
kubectl create configmap redis-config --from-file=redis.properties

K8S之configmap
我们进行查看
K8S之configmap
K8S之configmap
我们接下来运行一个pod,pod的配置文件cm.yaml内容为:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: redis-config
  restartPolicy: Never

我们定义一个volume,名字叫config-volume,来自configMap,容器的挂载对应config-volume,容器启动的时候会执行cat命令,我们可以通过日志进行查看。

K8S之configmap

K8S之configmap
第二种方式,以变量的形式进行挂载,类似secret

我们新建一个变量的定义myconfig.yaml,内容如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig
  namespace: default
data:
  special.level: info
  special.type: hello

从配置文件中,我们看到我们定义了两个变量info和hello
K8S之configmap
启动进行查看
K8S之configmap
有了变量定义,我们构建我们的pod容器,config-var.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mypod3
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.level
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.type
  restartPolicy: Never

可以看到我们定义了一个叫mypod3的容器,env配置环境变量LEVEL和TYPE,命名随便,跟env的name对应即可,值来自myconfig的key
K8S之configmap

K8S之configmap
可以看到把info hello输出来了。

上一篇:k8s笔记(8)-- 容器化应用配置Configmap和Sercet


下一篇:Kubernetes 0-1 了解ConfigMap