首页 > 技术文章 > k8s基础概念之三 ConfigMap

RRecal 2021-12-16 17:09 原文

一般用configmap去管理一些配置文件,或者是大量的环境变量信息,configmap将配置和pod分开,有一个nginx,nginx.conf---》configmap.nginx。更易于配置文件的更改和管理

secret:secret根倾向于存储和共享敏感,加密的配置信息。

configmap加密,而secret不加密

 

 

ConfigMap的简单命令

kubectl create configmap test --from-file=/root/yaml/nginx.yaml 
#将/root/yaml/nginx.yaml文件写入configmap  名字为test(存储配置文件)

kubectl create configmap test02 --from-file=/root/yaml/
#将/root/yaml/目录下的文件写入configmap,configmap 名字为test02

kubectl create configmap test01 --from-literal=MYSQL_ROOT_PASSWORD=123456
#变量储存到configmap,变量名为MYSQL_ROOT_PASSWORD,值为123456,可以跟更多变量,在尾部加--from-literal=key=value  即可


kubectl describe configmaps test
#查询上面的结果

 

 

一个简单的configmap文件

apiVersion: v1
kind: ConfigMap
metadata:
  nginx
data:
  MYSQL_ROOT_PASSWORD: '123456' 
  #定义一个变量,值类型为字符串,所以需要加引号
  my.cnf: |
    [mysqld]
    pid-file                        = /var/run/mysqld/mysqld.pid
    socket                          = /var/run/mysqld/mysqld.sock
    datadir                         = /var/lib/mysql
    character-set-server            = utf8
    log-error                       = /var/log/mysqld.log
    # 中继日志
    relay-log=mysql-relay-bin
    replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%
    
#文件名为 my.cnf 需要换行的话冒号后面需要加 |   

 

简单的使用configmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: test04
data:
  MYSQL_ROOT_PASSWORD: '123456' 
  #定义一个变量,值类型为字符串,所以需要加引号
  my.cnf: |
    [mysqld]
    pid-file                        = /var/run/mysqld/mysqld.pid
    socket                          = /var/run/mysqld/mysqld.sock
    datadir                         = /var/lib/mysql
    character-set-server            = utf8
    log-error                       = /var/log/mysqld.log
    # 中继日志
    relay-log=mysql-relay-bin
    replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:5.7
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /opt    #挂载到那个目录
              name: test
          command:
          - sh
          - -c
          - sleep 100
       
      volumes:
        - name: test  #存储卷的名称
          configMap:
            name: test04     #configmap名字
            items:
              - key: my.cnf   #configmap 内文件
                path: my.cnf   #configmap挂载到容器内的相对路径

查看帮助:

kubectl explain deployment.spec.template.spec.volumes.configMap.items #查询每个字段下面有哪些子项,并且有其说明这里,作为参考

 

推荐阅读