ConfigMap用管理对象的方式管理配置(1)

发表于:2022-3-17 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:kevinyan    来源:稀土掘金

  什么是ConfigMap
  能够灵活管理应用的配置是一个系统能否长期成功运转的一个关键因素,尤其是在应用分布式微服务时更是如此。
  再将应用部署到测试,开发和生产等多个环境时,由于环境不同,将配置放到应用程序的镜像里不是一个好的做法。理想情况下,你会希望将配置与应用程序镜像分开管理好匹配不同的部署环境。在Kubernetes项目里这就是ConfigMap 发挥作用的地方。
  ConfigMap使您可以将应用配置从应用程序的镜像内容中分离出来。这使得你的容器化应用程序在Kubernetes里更具可移植性,而无需担心配置。用户和系统组件都可以在ConfigMap中存储配置数据。
  ConfigMap与另外一种API对象Secret有点类似 (后面会写文章单独介绍),但是它提供了一种管理非敏感信息的配置的方式。
  怎么创建ConfigMap
  ConfigMap的创建方式非常简单,你可以使用 kubectl create configmap 命令基于 目录、文件 或者字符串字面值来创建 ConfigMap:
  kubectl create configmap <map-name> <data-source>

  其中,<map-name> 是要设置的ConfigMap 名称,<data-source> 是要从中提取数据的目录、 文件或者字面值。
  你可以使用kubectl describe 或者 kubectl get获取已创建的ConfigMap的信息。
  下面我们来演示一下这三种创建ConfigMap的方式。
  通过文件目录创建ConfigMap
  要从目录创建ConfigMap,必须首先创建一个目存放配置文件的目录:
  $ mkdir configmap-demo 

  然后将示例配置文件下载到目录中:
  wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties -O configmap-demo-game
  wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties  -O configmap-demo-ui
  
  下面是这l两个配置文件的内容,如果因为网络问题下载不到这个文件的话可以自己创建一个config-demo文件把内容粘贴进去。
  enemies=aliens
  lives=3
  enemies.cheat=true
  enemies.cheat.level=noGoodRotten
  secret.code.passphrase=UUDDLRLRBABAS
  secret.code.allowed=true
  secret.code.lives=30
  -----文件分割-----
  color.good=purple
  color.bad=yellow
  allow.textmode=true
  how.nice.to.look=fairlyNice
 
  接下来使用kubectl create configmap命令执行创建:
  $ kubectl create configmap demo-configmap --from-file=configmap-demo
  configmap "demo-configmap" created

  使用kubectl describe可以查看demo-configmap这个ConfigMap的描述:
  $ kubectl describe configmap demo-configmap
  Name:         demo-configmap
  Namespace:    default
  Labels:       <none>
  Annotations:  <none>
  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=30
  ui.properties:
  ----
  color.good=purple
  color.bad=yellow
  allow.textmode=true
  how.nice.to.look=fairlyNice
  Events:  <none>
 
  可以看到ConfigMap会把两个文件的内容作为其数据条目。
  通过文件创建ConfigMap
  从文件创建ConfigMap与从目录创建非常相似。需要做的就是将文件名传递给–-from-file参数。通过这种方式创建ConfigMap时,你可以根据需要多次使用--from-file参数,将多个文件数据源添加到ConfigMap中。
  kubectl create configmap configmap-demo-2 \
  --from-file=configmap-demo-game \
  --from-file=configmap-demo-ui

  直接用字符串创建ConfigMap
  通过这种方式创建ConfigMap意味着您可以直接从命令行指定配置,而无需创建任何文件或目录。比如使用命令** kubectl create ConfigMap special-config –from-literal=special.how=very –from-literal=special.type=charm**。
  你可以传入多个键值对。命令行中提供的每对键值在 ConfigMap 的 data 部分中均表示为单独的条目。
  kubectl get configmap special-config -o yaml

  输出类似以下内容:
  apiVersion: v1
  kind: ConfigMap
  metadata:
    creationTimestamp: 2020-10-30T19:14:38Z
    name: special-config
    namespace: default
    resourceVersion: "3"
    selfLink: /api/v1/namespaces/default/configmaps/special-config
    uid: fcddce046-d653-71eb-8f30-68f728db1988
  data:
    special.how: very
    special.type: charm

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号