51Testing软件测试论坛

标题: ConfigMap用管理对象的方式管理配置(1) [打印本页]

作者: lsekfe    时间: 2022-3-21 09:31
标题: ConfigMap用管理对象的方式管理配置(1)
什么是ConfigMap
  能够灵活管理应用的配置是一个系统能否长期成功运转的一个关键因素,尤其是在应用分布式微服务时更是如此。
  再将应用部署到测试,开发和生产等多个环境时,由于环境不同,将配置放到应用程序的镜像里不是一个好的做法。理想情况下,你会希望将配置与应用程序镜像分开管理好匹配不同的部署环境。在Kubernetes项目里这就是ConfigMap 发挥作用的地方。
  ConfigMap使您可以将应用配置从应用程序的镜像内容中分离出来。这使得你的容器化应用程序在Kubernetes里更具可移植性,而无需担心配置。用户和系统组件都可以在ConfigMap中存储配置数据。
  ConfigMap与另外一种API对象Secret有点类似 (后面会写文章单独介绍),但是它提供了一种管理非敏感信息的配置的方式。
  怎么创建ConfigMap
  ConfigMap的创建方式非常简单,你可以使用 kubectl create configmap 命令基于 目录、文件 或者字符串字面值来创建 ConfigMap:
  1. kubectl create configmap <map-name> <data-source>
复制代码
 其中,<map-name> 是要设置的ConfigMap 名称,<data-source> 是要从中提取数据的目录、 文件或者字面值。
  你可以使用kubectl describe 或者 kubectl get获取已创建的ConfigMap的信息。
  下面我们来演示一下这三种创建ConfigMap的方式。
  通过文件目录创建ConfigMap
  要从目录创建ConfigMap,必须首先创建一个目存放配置文件的目录:
  1.  $ mkdir configmap-demo
复制代码
然后将示例配置文件下载到目录中:
  1. wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties -O configmap-demo-game
  2.   wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties  -O configmap-demo-ui
复制代码
下面是这l两个配置文件的内容,如果因为网络问题下载不到这个文件的话可以自己创建一个config-demo文件把内容粘贴进去。
  1. enemies=aliens
  2.   lives=3
  3.   enemies.cheat=true
  4.   enemies.cheat.level=noGoodRotten
  5.   secret.code.passphrase=UUDDLRLRBABAS
  6.   secret.code.allowed=true
  7.   secret.code.lives=30
  8.   -----文件分割-----
  9.   color.good=purple
  10.   color.bad=yellow
  11.   allow.textmode=true
  12.   how.nice.to.look=fairlyNice
复制代码
接下来使用kubectl create configmap命令执行创建:
  1.  $ kubectl create configmap demo-configmap --from-file=configmap-demo
  2.   configmap "demo-configmap" created
复制代码
使用kubectl describe可以查看demo-configmap这个ConfigMap的描述:
  1. $ kubectl describe configmap demo-configmap
  2.   Name:         demo-configmap
  3.   Namespace:    default
  4.   Labels:       <none>
  5.   Annotations:  <none>
  6.   Data
  7.   ====
  8.   game.properties:
  9.   ----
  10.   enemies=aliens
  11.   lives=3
  12.   enemies.cheat=true
  13.   enemies.cheat.level=noGoodRotten
  14.   secret.code.passphrase=UUDDLRLRBABAS
  15.   secret.code.allowed=true
  16.   secret.code.lives=30
  17.   ui.properties:
  18.   ----
  19.   color.good=purple
  20.   color.bad=yellow
  21.   allow.textmode=true
  22.   how.nice.to.look=fairlyNice
  23.   Events:  <none>
复制代码
可以看到ConfigMap会把两个文件的内容作为其数据条目。
  通过文件创建ConfigMap
  从文件创建ConfigMap与从目录创建非常相似。需要做的就是将文件名传递给–-from-file参数。通过这种方式创建ConfigMap时,你可以根据需要多次使用--from-file参数,将多个文件数据源添加到ConfigMap中。
  1. kubectl create configmap configmap-demo-2 \
  2.   --from-file=configmap-demo-game \
  3.   --from-file=configmap-demo-ui
复制代码
直接用字符串创建ConfigMap
  通过这种方式创建ConfigMap意味着您可以直接从命令行指定配置,而无需创建任何文件或目录。比如使用命令** kubectl create ConfigMap special-config –from-literal=special.how=very –from-literal=special.type=charm**。
  你可以传入多个键值对。命令行中提供的每对键值在 ConfigMap 的 data 部分中均表示为单独的条目。
  1.  kubectl get configmap special-config -o yaml
复制代码
输出类似以下内容:
  1.  apiVersion: v1
  2.   kind: ConfigMap
  3.   metadata:
  4.     creationTimestamp: 2020-10-30T19:14:38Z
  5.     name: special-config
  6.     namespace: default
  7.     resourceVersion: "3"
  8.     selfLink: /api/v1/namespaces/default/configmaps/special-config
  9.     uid: fcddce046-d653-71eb-8f30-68f728db1988
  10.   data:
  11.     special.how: very
  12.     special.type: charm
复制代码











欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2