一、ConfigMap介绍

ConfigMap是一种API对象,用来将非加密数据保存到键值对中。可以用作环境变量、命令行参数或者存储卷中的配置文件。

ConfigMap可以将环境变量配置信息和容器镜像解耦,便于应用配置的修改。如果需要存储加密信息时可以使用Secret对象。

二、ConfigMap创建

1.通过命令行创建configmap

可以使用 kubectl create configmap 从文件、目录或者 key-value 字符串创建等创建 ConfigMap

 (1)通过文件创建configmap

$ echo hello > test1.txt
$ ehco world > test2.txt
$ kubectl create configmap my-config --from-file=key1=test1.txt  --from-file=key2=test2.txt
$ kubectl describe configmap my-config

看到该configmap中有两个键值对,key1:hello 和 key2:world

(2)通过文件夹创建configmap

$ mkdir config
$ echo hello > config/test1
$ echo world > config/test2

#根据文件夹创建configmap

$ kubectl create configmap dir-config --from-file=config/

$ kubectl describe configmap dir-config

看到该configmap资源中有两个键值对,test1:hello和test2:world,key为文件名,value为文件内容

(3)通过键值对创建configmap

$ kubectl create configmap literal-config --from-literal=key1=hello --from-literal=key2=world

$ kubectl describe configmap literal-config

2.通过yaml文件创建

#config.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: my-config
data:key1: hellokey2: world

$ kubectl create -f config.yaml

$ kubectl describe configmap my-config

三、ConfigMap的使用

Pod的使用方式:

1. 将ConfigMap中的数据设置为容器的环境变量

2. 将ConfigMap中的数据设置为命令行参数

3. 使用Volume将ConfigMap作为文件或目录挂载

4. 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap

1.配置到容器的环境变量

# test-pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"env:- name: KEY1valueFrom:configMapKeyRef:name: my-configkey: key1- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2

#创建pod

$ kubectl create -f test-pod-configmap.yaml

2. 设置为命令行参数

# test-pod-configmap-cmd
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap-cmd
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentcommand: [ "/bin/sh","-c","echo $(KEY1) $(KEY2)"]env:- name: KEY1valueFrom:configMapKeyRef:name: my-configkey: key1- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2restartPolicy: Never

# 创建pod,该pod成功启动后会输出环境变量KEY1和KEY2的值

$ kubectl create -f test-pod-configmap-cmd.yaml

#查看pod的日志

$ kubectl logs test-pod-configmap-cmd

#进入到容器中查看环境变量

$ kubectl exec -it test-pod-configmap -- /bin/sh

3.将configmap挂载到容器中

# test-pod-projected-configmap-volume.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-projected-configmap-volume
spec:containers:- name: test-pod-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"volumeMounts:- name: config-volumemountPath: "/projected-volume"readOnly: truevolumes:- name: config-volumeprojected:sources:- configMap:name: my-config

#创建pod

kubectl create -f test-pod-projected-configmap-volume.yaml

#进入容器

$ kubectl exec -it test-pod-projected-configmap-volume -- /bin/sh

#查看挂在到容器中的文件内容

通过volume挂载和环境变量的区别

通过Volume挂载到容器内部时,当该configmap的值发生变化时,容器内部具备自动更新的能力,但是通过环境变量设置到容器内部该值不具备自动更新的能力。

注意:

ConfigMap必须在Pod使用它之前创建

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

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

感谢:

https://kubernetes.io/zh/docs/concepts/configuration/configmap/

k8s -- ConfigMap - 简书

k8s之ConfigMap详细理解及使用相关推荐

  1. k8s之Secret详细理解及使用

    Secret介绍 k8s secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息.它把 Pod 想要访问的加密数据存放到 Etcd 中.然后用户就可以通过在 Pod 的容器里挂 ...

  2. 【Kubernetes】k8s的安全管理详细说明【SA配置、k8s安装dashboard、资源限制(resource、limit、resourcequota)】

    文章目录 环境准备 token验证&&kubeconfig验证 role和clusterrole赋权 sa[Service Account] sa总结 1.service accoun ...

  3. 【K8S实战系列-nignx-2】k8s中configmap挂载配置nginx.conf

    [K8S实战系统-nignx-2]k8s中configmap挂载配置nginx.conf 1. ConfigMap是什么 ConfigMap作用是存储不加密的数据到etcd中,让Pod以变量或数据卷V ...

  4. 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】

    文章目录 环境准备 k8s安全框架介绍 token验证 说明 启用token验证 测试token验证 base-auth[已经被淘汰] kubeconfig验证 说明 kubeconfig文件拷贝做测 ...

  5. Maven依赖详细理解

    Maven依赖理解 1 简介 2 依赖的配置 3 依赖的范围 4 传递性依赖 4.1 传递性依赖和依赖调解 5 依赖调解 6 可选依赖 7 总结 8 下载 1 简介  在Maven项目中,有一个核心文 ...

  6. 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose

    [时序列]时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 理解python sm.tsa.seasonal_decompose 在做时序列分析 ...

  7. 【Kubernetes】k8s的安全管理详细说明【role赋权和clusterrole赋权详细配置说明】

    文章目录 环境准备 token验证&&kubeconfig验证 授权 了解authorization-mode授权模式 AlwaysAllow&&AlwaysDeny ...

  8. K8s 中 ConfigMap 使用介绍

    K8s 中 ConfigMap 使用介绍 一.基本介绍 二.ConfigMap 使用介绍 1.ConfigMap 的创建 2.Pod 中使用 ConfigMap 一.基本介绍 ConfigMap 是一 ...

  9. 模型整合之模型堆叠——详细理解Stacking model

    详细理解Stacking model 如果你得到了10个不一样的model,并且每个model都各有千秋,这个时候你该怎么选?想必你一定是很为难吧,但通过集成方法,你可以轻松的将10个model合成为 ...

最新文章

  1. 一道比较实用的MySQL面试题:游戏数据充值查询
  2. Apache Hadoop 简单配置及实践
  3. 编程珠玑读书笔记之磁盘文件排序
  4. label标签 html5,HTML5 label 标签
  5. java判断一个月间隔_如何检查间隔列表(Joda-Time)是否完全涵盖Java中的一个月
  6. jQuery-1.9.1源码分析系列(十) 事件系统——事件体系结构
  7. 软件测试复盘思路个人总结
  8. office2007怎么卸载干净?
  9. 笔记本电脑修改BIOS及刷写教程
  10. 课后习题7.11 医院内科有A,B,C,D,E,F,G共7位医生,每人在一周内要值一次夜班,排班的要求是: (1)A医生值班日比C医生晚1天; (2)D医生值班日比E医生晚2天; (3)B医生值班日比
  11. 语料标注平台BRAT安装说明
  12. Notepad++ 安装 HexEditor 插件
  13. matlab多项式计算题目,MATLAB数据分析与多项式计算-习题答案
  14. 【强化学习】Q-Learning原理及代码实现
  15. Mongoose初使用总结
  16. c语言基础题(笔记四)
  17. Godaddy域名解析
  18. 看见幽灵:Vitalik 终于规范化了以太坊 Casper 协议升级
  19. 为android系统添加USB AUDIO设备的放音和录音功能(转载)
  20. 微信与QQ——腾讯帝国的两大王牌

热门文章

  1. 保险行业“智慧化”,数字化运营方案
  2. MATLAB的RTL-SDR硬件支持包使用详细教程
  3. c语言程序设计之基础题
  4. 手机只是前菜,YunOS为何还要瞄准“家里、车里、路上和娱乐”?
  5. java高校后勤报修系统
  6. 线面积分应该没那么难吧···
  7. 56. 合并区间 排序数组
  8. 365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值
  9. Cinema 4D R20 Essential Training: VFX Cinema 4D R20基本训练:视觉特效 Lynda课程中文字幕
  10. 微信支付银行卡交易的限额是多少?