Kubernetes 之 ConfigMap部署

描述:在执行应用程式或是生产环境等等, 会有许多的情况需要做变更, 而我们不希望因应每一种需求就要准备一个镜像档, 这时就可以透过 ConfigMap 来帮我们做一个配置档或是命令参数的映射, 更加弹性化使用我们的服务或是应用程式。ConfigMap 用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap 跟 secret 很类似,但它可以更方便地处理不包含敏感信息的字符串。

一、创建ConfigMap:

创建ConfigMap的方式4种:

  • 通过直接在命令行中指定configmap参数创建,即--from-literal;
  • 通过指定文件创建,即将一个配置文件创建为一个ConfigMap, --from-file=<文件>
  • 通过指定目录创建,即将一个目录下所有的配置文件创建为一个ConfigMap,--from-file=<目录>
  • 事先写好标准的configmap的yaml文件,然后kubectl create -f 创建

环境变量注入只要能进入Pod都能被人看见,最好使用存储卷然后权限调给600,只有属主能看见

1、命令创建ComfigMap:

ConfigMap 用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap 跟 secret 很类似,但它可以更方便地处理不包含敏感信息的字符串。

[root@master /]# kubectl create configmap special-config --from-literal=special.how=very 
configmap "special-config" created

[root@master cm]# kubectl get configmap special-config -o go-template='{{.data}}'
map[special.how:very][root@master cm]# 


 2、文件创建 

示例一:创建ENV文件,a.conf

vim a.conf

a=b
c=d



[root@master cm]# kubectl get configmap special-config1 -o go-template='{{.data}}'
map[a:b c:d][root@master cm]# 

 示例二:目录中创建

3、从yaml/json文件创建:

apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
[root@master cm]# kubectl create -f config.yaml 
configmap "special-config4" created

 

二、ConfigMap使用:

一、ConfigMap 可以通过三种方式在 Pod 中使用,三种分别方式为:设置环境变量、设置容器命令行参数以及在 Volume 中直接挂载文件或目录。

注意
1、ConfigMap 必须在 Pod 引用它之前创建

2、使用  envFrom  时,将会自动忽略无效的键

3、Pod 只能使用同一个命名空间内的 ConfigMap

二、用作环境变量

首先创建ConfigMap

[root@master cm]# kubectl create configmap special-config10 --from-literal=special.how=very --from-literal=special.type=charm
configmap "special-config10" created
[root@master cm]# kubectl create configmap env-config10 --from-literal=log_level=INFO
configmap "env-config10" created

yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-container
      image: gcr.io/google_containers/busybox
      command: ["/bin/sh", "-c", "env"]
      env:
        - name: SPECIAL_LEVEL_KEY
          valueFrom:
            configMapKeyRef:
              name: special-config
              key: special.how
        - name: SPECIAL_TYPE_KEY
          valueFrom:
            configMapKeyRef:
              name: special-config
              key: special.type
      envFrom:
        - configMapRef:
            name: env-config
  restartPolicy: Never
[root@master cm]# kubectl apply -f config.yaml 
pod "test-pod" created
[root@master cm]# kubectl get pod|grep test
test-pod                             0/1       ContainerCreating   0          7s
[root@master cm]# 

 当 Pod 结束后会输出

SPECIAL_LEVEL_KEY=very
SPECIAL_TYPE_KEY=charm
log_level=INFO

用作命令行参数: 将 ConfigMap 用作命令行参数时,需要先把 ConfigMap 的数据保存在环境变量中,然后通过  $(VAR_NAME)  的方式引用环境变量

三、使用 volume 将 ConfigMap 作为文件或目录直接挂载

将创建的 ConfigMap 直接挂载至 Pod 的 / etc/config 目录下,其中每一个 key-value 键值对都会生成一个文件,key 为文件名,value 为内容:

apiVersion: v1
kind: Pod
metadata:
   name: vol-test-pod
spec:
   containers:
     - name: test-container
     image: gcr.io/goole_containers/busybox
     nginx: nginx
     command: ["/bin/sh","-c","sleep 36000"]
     volumeMounts:
     - name: config-volume
       mountPath: /etc/nginx/spcial.how
       subPath: special.how
   volumes:
     - name: config-volume
       configMap: 
         name: special-config
         items:
         - key: special.how
           path: special.how
    restartPolicy: Never
# ls /etc/nginx/
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params special.how uwsgi_params win-utf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值