k8s概念-ConfigMap

这篇具有很好参考价值的文章主要介绍了k8s概念-ConfigMap。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

回到目录

一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。

1 创建ConfigMap

#使用 kubectl create configmap -h 查看示例,构建 configmap 对象
Examples:
  # Create a new config map named my-config based on folder bar
  kubectl create configmap my-config --from-file=path/to/bar
  
  # Create a new config map named my-config with specified keys instead of file basenames on disk
  kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
  
  # Create a new config map named my-config with key1=config1 and key2=config2
  kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
  
  # Create a new config map named my-config from the key=value pairs in the file
  kubectl create configmap my-config --from-file=path/to/bar
  
  # Create a new config map named my-config from an env file
  kubectl create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
1.1 将指定目录下所有文件加载到配置文件中
# Create a new config map named my-config based on folder bar
# kubectl create configmap my-config --from-file=path/to/bar
#example:
#在test目录下有两个配置文件db.properties redis.properties

#1.创建configmap,名字为test-cm,从test目录下加载
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-file=test/
configmap/test-cm created

#2.查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d9h #k8s默认的认证
test-cm            2      7s	 #我们创建的

#3.查看test-cm的详细信息
[root@k8s-master1 configmap]# kubectl describe cm test-cm
#内容如下:
Name:         test-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
db.properties:   #key
----
username: root
password: 1234

redis.properties:
----
port: 6379


BinaryData
====

Events:  <none>
1.2 指定一个或多个文件和key
# Create a new config map named my-config with specified keys instead of file basenames on disk
#  kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt

#指定一个或多个文件,不加key时以文件名作为key

#example:

#创建configmap,名称为testfile-cm,从指定的test目录下的db.properties加载
[root@k8s-master1 configmap]# kubectl create cm testfile-cm --from-file=test/db.properties
configmap/testfile-cm created

#查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d10h
testfile-cm        1      5s

#查看详情
[root@k8s-master1 configmap]# kubectl describe cm testfile-cm
Name:         testfile-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
db.properties: #不指定key,以文件名为key,如果指定则以具体指定作为key
----
username: root
password: 1234


BinaryData
====

Events:  <none>
1.3 命令上手动添加key-value
# Create a new config map named my-config with key1=config1 and key2=config2
#kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2

#直接写入key和value

#example:

#创建configmap,名称为test-cm,手动添加key:user,value:root;key:password,value:1234
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-literal=user=root --from-literal=password=1234
configmap/test-cm created
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d10h
test-cm            2      7s
[root@k8s-master1 configmap]# kubectl describe cm test-cm
Name:         test-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
password: #key
----
1234   #value
user: #key
----
root  #value

BinaryData
====

Events:  <none>

2 configmap的使用

在pod中

  • 将configmap中的数据设置为容器的环境变量

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

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

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

将configmap挂载到容器中,configmap变化,容器自动更新

而 写入环境变量不会自动更新文章来源地址https://www.toymoban.com/news/detail-624444.html

2.1 配置到容器的环境变量中
# test-pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:
 name: test-pod-configmap
spec:
 containers:
  - name: test-busybox
    image: busybox
    imagePullPolicy: IfNotPresent
    args:
    - sleep
    - "86400"
    env:                  # env,配置容器环境变量
    - name: KEY1		  # 容器环境变量key为key1
      valueFrom:		  # value内容
       configMapKeyRef:	  # 通过configmap的key映射
        name: my-config	  # configmap的名称
        key: key1		  # configmap中的key
    - name: KEY2
      valueFrom:
       configMapKeyRef:
        name: my-config
        key: key2
2.2 设置为命令行参数
# test-pod-configmap-cmd
apiVersion: v1
kind: Pod
metadata:
 name: test-pod-configmap-cmd
spec:
 containers:
  - name: test-busybox
    image: busybox
    imagePullPolicy: IfNotPresent
    command: [ "/bin/sh","-c","echo $(KEY1) $(KEY2)"]
    env:
    - name: KEY1
      valueFrom:
       configMapKeyRef:
        name: my-config
        key: key1
    - name: KEY2
      valueFrom:
       configMapKeyRef:
        name: my-config
        key: key2
 restartPolicy: Never
2.3 将configmap挂载到容器中
# test-pod-projected-configmap-volume.yaml
apiVersion: v1
kind: Pod
metadata:
 name: test-pod-projected-configmap-volume
spec:
 containers:
 - name: test-pod-busybox
   image: busybox
   imagePullPolicy: IfNotPresent
   args:
   - sleep
   - "86400"
   volumeMounts:                        # 挂载
   - name: config-volume				# 挂载的数据卷名
     mountPath: "/projected-volume"		# 挂载到哪的路径
     readOnly: true						# 只读权限
 volumes:								# 数据卷
 - name: config-volume					# 数据卷名称
   projected:
    sources:
    - configMap:						# 数据卷为configmap
       name: my-config					# 数据卷名

到了这里,关于k8s概念-ConfigMap的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s里pv pvc configmap

    通过storageClassName 将PV 和PVC 关联起来。

    2024年02月11日
    浏览(32)
  • K8S:配置资源管理 Secret和configMap

    (1)Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 secret 中是为了更方便的控制如何使用数据,并减少暴露的风险 (2)类似挂载的方式,使用的时候调用即可 ①kubernetes.io/service-account-token 由Kubernetes自动创建

    2024年02月03日
    浏览(58)
  • K8S(六):Pod的配置管理——ConfigMap使用

    𝑰’𝒎 𝒉𝒉𝒈, 𝑰 𝒂𝒎 𝒂 𝒈𝒓𝒂𝒅𝒖𝒂𝒕𝒆 𝒔𝒕𝒖𝒅𝒆𝒏𝒕 𝒇𝒓𝒐𝒎 𝑵𝒂𝒏𝒋𝒊𝒏𝒈, 𝑪𝒉𝒊𝒏𝒂. 🏫 𝑺𝒉𝒄𝒐𝒐𝒍: 𝑯𝒐𝒉𝒂𝒊 𝑼𝒏𝒊𝒗𝒆𝒓𝒔𝒊𝒕𝒚 🌱 𝑳𝒆𝒂𝒓𝒏𝒊𝒏𝒈: 𝑰’𝒎 𝒄𝒖𝒓𝒓𝒆𝒏𝒕𝒍𝒚 𝒍𝒆

    2023年04月08日
    浏览(37)
  • K8S初级入门系列之四-Namespace/ConfigMap/Secret

         本章节我们继续学习Namespace、ConfigMap、Secret基础概念,了解他们基本用法和操作。NameSpace为命名空间,在同一集群中试下资源隔离。ConfigMap通过key-value的方式实现明文配置数据的保存,Secret与ConfigMap类似,不过是采用密文方式保存。      K8S集群可以通过Namespace创建多

    2024年02月15日
    浏览(51)
  • k8s configMap中subPath字段和items字段详解

    在Linux中,将目录A挂载到目录B,则目录B原有的文件都会被目录A下的文件覆盖。 那么在k8s中,如何将configmap挂载到容器中某个目录的文件中呢?答案是使用subPath。 subPath可以将configMap和secret作为文件挂载到容器中而不覆盖挂载目录下的文件。 话不多说,直接看一个例子。 制

    2024年02月06日
    浏览(59)
  • 持续集成部署-k8s-配置与存储-配置管理:ConfigMap 的热更新

    在 Kubernetes 中, ConfigMap 是用于存储非敏感配置数据的 API 对象,它可以被挂载到 Pod 中作为文件或环境变量。 ConfigMap 的热更新指的是在不重启 Pod 的情况下,动态更新 Pod 中使用的配置数据。 首先创建一个 configMap: 配置文件如下: private-image-pull-pod.yaml

    2024年02月05日
    浏览(39)
  • 学习笔记二十九:K8S配置管理中心Configmap实现微服务配置管理

    Configmap是k8s中的资源对象,用于保存非机密性的配置的,数据可以用key/value键值对的形式保存,也可通过文件的形式保存。 Configmap能解决哪些问题? 我们在部署服务的时候,每个服务都有自己的配置文件,如果一台服务器上部署多个服务:nginx、tomcat、apache等,那么这些配置

    2024年02月06日
    浏览(46)
  • 飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等

    为什么需要volume ConfigMap Volume nfs挂载volume 持久卷的痛点 参考文档: 作者:又拍云 链接:https://juejin.cn/post/7186925237592653884 来源:稀土掘金

    2024年01月18日
    浏览(51)
  • 轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

    1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql,希望将它的配置文件挂载出去,以便随时修改,可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secret 对象类型用来保存敏感信息,例如使用ya

    2024年02月16日
    浏览(93)
  • 开源项目ChatGPT-Next-Web的容器化部署(四)-- k8s容器部署使用configmap配置

    本文的内容是在k8s容器中,如何使用configmap对.env文件进行挂载,实现环境的差异化配置。 项目ChatGPT-Next-Web使用了.env文件来配置不同环境下的值: 所以,我们同理新增两个配置文件,见下: 生产环境的.env文件对应生产环境的数据库连接等信息,不可能写在上面的源码中。

    2024年04月12日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包