2022年10月更文挑战21-k8s中的configMap

90 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

k8s中的configMap

前文

本文内容主要是针对于k8s中常用的数据存储类型,configMap相关知识的一些整理及总结,主要是针对其在k8s部署过程中的应用等内容。

什么是configMap

configMap是k8s中非常常用的数据存储方式,通常用于存储一些已知的信息,例如数据库地址等等。同时,在某些情况下,会将一些中间件的配置信息直接存储在configMap之中,例如redis的配置文件、mysql的配置文件等等,在pod启动时直接从configMap进行内容的读取,实现创建pod时配置信息的自动变化。一般来说,configMap不会被用于存储大量的数据,而是存储一些简单的数据内容。当数据量过大,数据大小超过1m时,我们一般会采用文件直接挂载的方式,直接在启动时将文件挂载到对应的pod的容器之中。

configMap的使用

  • 首先需要进行configMap的创建,以一个例子来简单看一下创建configMap时使用的文件:
kind: ConfigMap
apiVersion: v1
metadata:
  name: config
  namespace: test-cloud
  annotations:
    kubesphere.io/creator: admin
data:
  NACOS_HOST: nacos-0.nacos-qqz9.global
  NACOS_PORT: '8848'
  SENTINEL_DAHSBOARD_PORT: '8858'
  SENTINEL_HOST: sentinel-0.sentinel-vfdr.global
  SENTINEL_PORT: '8719'

如上所示,创建数据时主要是通过特定的数据类型进行创建。而实际在其中存储的数据,一般是采用kv的方式实现存储。也就是我们在其中存储不同的数据,调用时引入该配置后,可以在不同位置读取我们所需要的特定数据。

  • 在实际的pod中,我们需要指定configMap,并对它实现读取,将读取的结果或挂载到环境变量中,或挂载到文件目录里等等。使得我们预先所配置的数据信息,能够直接在我们对应的容器之中生效。也就实现我们对于配置信息的应用。
env:
            - name: NACOS_HOST
              valueFrom:
                configMapKeyRef:
                  name: config
                  key: NACOS_HOST
            - name: NACOS_PORT
              valueFrom:
                configMapKeyRef:
                  name: config
                  key: NACOS_PORT
            - name: SENTINEL_DAHSBOARD_PORT
              valueFrom:
                configMapKeyRef:
                  name: config
                  key: SENTINEL_DAHSBOARD_PORT
            - name: SENTINEL_HOST
              valueFrom:
                configMapKeyRef:
                  name: config
                  key: SENTINEL_HOST
            - name: SENTINEL_PORT
              valueFrom:
                configMapKeyRef:
                  name: config
                  key: SENTINEL_PORT

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。