热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KubernetesConfigMap概念与创建

Secret可以为Pod提供密码、Token、私钥等敏感数据。对于一些非敏感数据,比如应用的配置信息,则可以用ConfigMap。ConfigMap的

Secret 可以为 Pod 提供密码、Token、私钥等敏感数据 。对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap。

ConfigMap 的创建和使用方式与 Secret 非常类似,主要的不同是数据以明文的形式存放。 

 


configMap



描述信息ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象

 现在有一千台nginx,和一千台nginx的配置文件需要修改,这里分了很多组,每一组的nginx的配置文件都不一样。这个时候时候管理起来就非常费劲了。

Configmap保存了nginx的配置文件,这个资源可以在后期创建Pod的时候获取configmap信息,不管多少个pod过来都可以申请同一个nginx config。并且对nginx config进行修改以后在pod当中也会发生变化,需要重新载入配置文件即可。

 


configmap的作用



configmap和secret是两种特殊的存储卷,它们不是给pod提供存储空间用的,而是给管理员或者用户提供了从外部向pod内部注入信息的方式.

configmap:把配置文件放在配置中心上,然后多个pod读取配置中心的配置文件,不过,configmap中的配置信息都是明文的,所以不安全;

secret:功能和configmap一样,只不过配置中心存储的配置文件不是明文的.configmap和secret也是专属于某个名称空间的.


  1. Configmap用于保存配置数据,以键值对形式存储。
  2. configMap 资源提供了向 Pod 注入配置数据的方法。
  3. 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。

典型的使用场景


  1. 填充环境变量的值
  2. 设置容器内的命令行参数
  3. 填充卷的配置文件

 


创建configmap的四种方式



目录方式(目录中的文件名为key,文件内容是value)

在指定目录下面有两个文件,每个文件里面定义了其属性。

在创建的时候只需要给configmap取一个名称,然后指定目录,那么目录下面的所有文件都会被创建出来。存储的结构依然是k-v结构,k是文件名称,key是文件里面定义的内容。

[root@k8s-master configmap]# cat game.properties
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30[root@k8s-master configmap]# cat ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice[root@k8s-master configmap]# ls
game.properties ui.properties[root@k8s-master configmap]# kubectl create configmap game-config --from-file=.
configmap/game-config created[root@k8s-master configmap]# kubectl get cm
NAME DATA AGE
game-config 2 18s#通过describe去查看,看到的也是键值保存形式
[root@k8s-master configmap]# kubectl describe cm game-config
Name: game-config
Namespace: default
Labels:
Annotations: Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNiceEvents:

--from-file指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

使用文件

创建只要指定为一个文件就可以从单个文件中创建 ConfigMap,和目录的创建方式没有什么区别,上面指定的是目录,一个指定的是文件的本体。

[root@k8s-master configmap]# kubectl create configmap game-config1 --from-file=game.properties
configmap/game-config1 created
[root@k8s-master configmap]# kubectl describe cm game-config1
Name: game-config1
Namespace: default
Labels:
Annotations: Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30Events:

使用字面值创建

使用文字值创建,利用—from-literal参数传递配置信息,该参数可以使用多次,格式如下(指定键名键值)。

这里的键名是 special.how special.type。

[root@k8s-master configmap]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
configmap/special-config created
[root@k8s-master configmap]# kubectl describe cm special-config
Name: special-config
Namespace: default
Labels:
Annotations: Data
====
special.how:
----
very
special.type:
----
charm
Events:

编写configmap的yaml文件

[root@k8s-master configmap]# cat configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:name: config-map-yml
data:db_host: "172.25.60.250"db_port: "3306"[root@k8s-master configmap]# kubectl apply -f configmap.yml
configmap/config-map-yml created
[root@k8s-master configmap]# kubectl describe cm config-map-yml
Name: config-map-yml
Namespace: default
Labels:
Annotations:
Data
====
db_host:
----
172.25.60.250
db_port:
----
3306
Events:

 


推荐阅读
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 作为一名新手开发者,我正在尝试使用 ASP.NET 和 Vue.js 构建一个单页面应用,涉及多个复杂组件(如按钮、图表等)。希望有经验的开发者能够提供指导。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 使用Echarts for Weixin 小程序实现中国地图及区域点击事件
    本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • 面试题总结_2019年全网最热门的123个Java并发面试题总结
    面试题总结_2019年全网最热门的123个Java并发面试题总结 ... [详细]
  • 在 CentOS 7 环境中使用 MySQL 5.6 镜像启动数据库时遇到权限问题,本文将详细探讨并提供解决方案。 ... [详细]
  • 本文介绍了Spring 2.0引入的TaskExecutor接口及其多种实现,包括同步和异步执行任务的方式。文章详细解释了如何在Spring应用中配置和使用这些线程池实现,以提高应用的性能和可管理性。 ... [详细]
author-avatar
lengmou
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有