五种创建k8s的configMap的方式及configmap使用

configmap介绍

Kubernetes 提供了 ConfigMap 来管理应用配置数据,将配置信息从容器镜像中解耦,使应用更灵活、可移植。

1、基于一个目录来创建ConfigMap

​ 你可以使用 kubectl create configmap 基于同一目录中的多个文件创建 ConfigMap。 当你基于目录来创建 ConfigMap 时,kubectl 识别目录下文件名可以作为合法键名的文件, 并将这些文件打包到新的 ConfigMap 中。普通文件之外的所有目录项都会被忽略 (例如:子目录、符号链接、设备、管道等等)

  • 创建本地目录:
mkdir -p configure-pod-container/configmap/
# 将示例文件下载到 `configure-pod-container/configmap/` 目录
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties

# 创建 ConfigMap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/

以上命令将 configure-pod-container/configmap 目录下的所有文件,也就是 game.propertiesui.properties 打包到 game-config ConfigMap 中。

  • 查看创建好的configmap

通过kubectl get configmap game-config -o yaml

在这里插入图片描述

上图红框中数据为对应configmap数据,发现有两个key-value对,可以key为文件名,value为对应的文件值。

  • 将 ConfigMap 数据添加到一个卷中

    现在来完成一项任务,将名为 game-config的configmap通过卷的方式注入到容器中

    # busy-config-volumn.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: from-dir-pod
    spec:
      containers:
        - name: test-container
          image: registry.k8s.io/busybox
          command:
          - /bin/sh
          - -c
          - |
           while true; do
              env;
              sleep 5;
           done
          volumeMounts:
          - name: game-config
            mountPath: /etc/config/
      volumes:
        - name: game-config
          configMap:
            # 提供包含要添加到容器中的文件的 ConfigMap 的名称
            name: game-config
      restartPolicy: Never
    
    

    使用命令创建pod

    [root@k8s-master01 projects]# kubectl apply -f busy-config-volumn.yaml
    pod/from-dir-pod created
    [root@k8s-master01 projects]# kubectl get pod
    NAME                                  READY   STATUS    RESTARTS   AGE
    from-dir-pod                         1/1     Running   0          9s
    

    查看映射文件:

    [root@k8s-master01 projects]# kubectl exec -it from-file-pod -- ls /etc/config
    game.properties  ui.properties
    
2、基于文件来创建ConfigMap
kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties

创建利用game-config-2的文件

[root@k8s-master01 projects]# cat from-file-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: from-file-pod
spec:
  containers:
    - name: test-container
      image: registry.k8s.io/busybox
      command:
      - /bin/sh
      - -c
      - |
       while true; do
          env;
          sleep 5;
       done
      volumeMounts:
      - name: game-config
        mountPath: /etc/config/
  volumes:
    - name: game-config
      configMap:
        # 提供包含要添加到容器中的文件的 ConfigMap 的名称
        name: game-config-2
  # 创建from-file-pod
[root@k8s-master01 projects]# kubectl apply -f from-file-pod.yaml
pod/from-file-pod created
[root@k8s-master01 projects]# kubectl get pod
NAME                                  READY   STATUS    RESTARTS   AGE
from-file-pod                         1/1     Running   0          14s

查看挂载的卷

[root@k8s-master01 projects]# kubectl exec -it from-file-pod -- ls /etc/config
game.properties

可以多次使用 --from-file 参数,从多个数据源创建 ConfigMap,如:

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties --from-file=configure-pod-container/configmap/ui.properties
[root@k8s-master01 projects]# kubectl exec -it from-file-pod -- cat /etc/config/ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
3、使用–from-env-file基于env文件来创建configMap
[root@k8s-master01 projects]# kubectl create configmap game-config-env --from-env-file=configure-pod-container/configmap/game.properties  --from-env-file=configure-pod-container/configmap/ui.properties
configmap/game-config-env created
[root@k8s-master01 projects]# kubectl get configmap game-config-env -o yaml
apiVersion: v1
data:
  allow.textmode: "true"
  color.bad: yellow
  color.good: purple
  enemies: aliens
  enemies.cheat: "true"
  enemies.cheat.level: noGoodRotten
  how.nice.to.look: fairlyNice
  lives: "3"
  secret.code.allowed: "true"
  secret.code.lives: "30"
  secret.code.passphrase: UUDDLRLRBABAS
kind: ConfigMap
metadata:
  creationTimestamp: "2024-11-22T08:57:14Z"
  name: game-config-env
  namespace: default
  resourceVersion: "1641033"
  uid: 63e073ac-72b3-46b8-b8ef-39dcc51a6449

可以看到通过–from-env-file参数会把文件以key-value形式进行保存,而不是整体保存。

将configMap数据作为env变量注入到pod中

[root@k8s-master01 projects]# cat from-env-file-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: from-env-file-pod
spec:
  containers:
    - name: test-container
      image: registry.k8s.io/busybox
      command:
      - /bin/sh
      - -c
      - |
       while true; do
          env;
          sleep 5;
       done
      env:
        # 定义环境变量
        - name: ALLOW_TEXTMODE_KEY
          valueFrom:
            configMapKeyRef:
              # ConfigMap 包含你要赋给 ALLOW.TEXTMODE_KEY 的值
              name: game-config-env
              # 指定与取值相关的键名
              key: allow.textmode


[root@k8s-master01 projects]# kubectl exec -it from-env-file-pod  -- env
ALLOW_TEXTMODE_KEY=true
... //省略其他环境变量
4、根据字面值创建 ConfigMap
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

[root@k8s-master01 projects]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
configmap/special-config created
[root@k8s-master01 projects]# kubectl get  configmap special-config -o yaml
apiVersion: v1
data:
  special.how: very
  special.type: charm
kind: ConfigMap
metadata:
  creationTimestamp: "2024-11-22T09:06:27Z"
  name: special-config
  namespace: default
  resourceVersion: "1642217"
  uid: ba08805a-489c-40b1-9b7c-79bf39412212

--from-env-file--from-file的区别

特性--from-env-file--from-file
文件格式要求必须是 KEY=VALUE 格式的键值对任意文本文件(可包含复杂内容)
数据结构每个键值对对应 ConfigMap 的一个条目文件名是键,文件内容是值
支持目录不支持支持,将目录中所有文件作为键值对存储
适用场景环境变量配置文件配置文件(如 .properties, .yaml 等)
示例 ConfigMap 数据结构{ "KEY1": "VALUE1", "KEY2": "VALUE2" }{ "filename1": "file content", ... }
5、基于yaml文件创建
apiVersion: v1
data:
  special.how: very
  special.type: charm
kind: ConfigMap
metadata:
  name: special-config

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923252.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssm185大学学术交流论坛+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于大学学术交流论坛当然也不能排除在外,随着网络技术的不断成熟,带动了大学学术交流论坛的发展,它彻底…

构建 Java Web 应用程序:从 Servlet 到数据库交互(Eclipse使用JDBC连接Mysql数据库)

第 1 部分:环境设置 安装 Java Development Kit (JDK):下载并安装 JDK。设置 IDE:安装并配置 IDE(如 IntelliJ IDEA 或 Eclipse)。安装数据库:下载并安装 MySQL 数据库。配置数据库:创建数据库…

C 语言面向对象

面向对象的基本特性:封装,继承,多态 1.0 面向过程概念 当我们在编写程序时,通常采用以下步骤: 1. 将问题的解法分解成若干步骤 2. 使用函数分别实现这些步骤 3. 依次调用这些函数 这种编程风格的被称作 面向过程…

aws服务--机密数据存储KMS(1)介绍和使用

在AWS(Amazon Web Services)中存储机密数据时,安全性和合规性是最重要的考虑因素。AWS 提供了多个服务和工具,帮助用户确保数据的安全性、机密性以及合规性。AWS Secrets Manager、KMS(Key Management Service)是推荐的存储机密数据的AWS服务和最佳实践。这里先看KMS。 …

ArcGIS应用指南:ArcGIS制作局部放大地图

在地理信息系统(GIS)中,制作详细且美观的地图是一项重要的技能。地图制作不仅仅是简单地将地理数据可视化,还需要考虑地图的可读性和美观性。局部放大图是一种常见的地图设计技巧,用于展示特定区域的详细信息&#xff…

【案例学习】如何使用Minitab实现包装过程的自动化和改进

Masimo 是一家全球性的医疗技术公司,致力于开发和生产各种行业领先的监控技术,包括创新的测量、传感器和患者监护仪。在 Masimo Hospital Automation 平台的助力下,Masimo 的连接、自动化、远程医疗和远程监控解决方案正在改善医院内外的护理…

【JavaEE初阶】多线程初阶下部

文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比(面试题) 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…

【小白学机器学习33】 大数定律python的 pandas.Dataframe 和 pandas.Series基础内容

目录 0 总结 0.1pd.Dataframe有一个比较麻烦琐碎的地方,就是引号 和括号 0.2 pd.Dataframe关于括号的原则 0.3 分清楚几个数据类型和对应的方法的范围 0.4 几个数据结构的构造关系 list → np.array(list) → pd.Series(np.array)/pd.Dataframe 1 python 里…

《用Python画蔡徐坤:艺术与编程的结合》

简介 大家好!今天带来一篇有趣的Python编程项目,用代码画出知名偶像蔡徐坤的形象。这个项目使用了Python的turtle库,通过简单的几何图形和精心设计的代码来展示艺术与编程的结合。 以下是完整的代码和效果介绍,快来试试看吧&…

OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术

​若该文为原创文章,未经允许不得转载 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/143932273 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 长沙红胖子Qt…

数据结构(Java版)第二期:包装类和泛型

目录 一、包装类 1.1. 基本类型和对应的包装类 1.2. 装箱和拆箱 1.3. 自动装箱和自动拆箱 二、泛型的概念 三、引出泛型 3.1. 语法规则 3.2. 泛型的优点 四、类型擦除 4.1. 擦除的机制 五、泛型的上界 5.1. 泛型的上界的定义 5.2. 语法规则 六、泛型方法 6.1…

ffmpeg 视频滤镜:高斯模糊-gblur

滤镜描述 gblur 官网地址 > FFmpeg Filters Documentation 这个滤镜会将视频变得模糊。 滤镜使用 参数 gblur AVOptions:sigma <float> ..FV.....T. set sigma (from 0 to 1024) (default 0.5)steps <int> ..FV.....T…

vue中路由缓存

vue中路由缓存 问题描述及截图解决思路关键代码及打印信息截图 问题描述及截图 在使用某一平台时发现当列表页码切换后点击某一卡片进入详情页后&#xff0c;再返回列表页时页面刷新了。这样用户每次看完详情回到列表页都得再重新输入自己的查询条件&#xff0c;或者切换分页到…

eclipse-git项目提示NO-HEAD

1、出现该问题的过程 本人在用eclipse拉取git代码&#xff0c;刚拉取完&#xff0c;可能还没来得及跟本地的分支合并&#xff0c;电脑就卡动了。无奈只能重启电脑&#xff0c;打开eclipse&#xff0c;maven项目后面就出现了xxx NO-HEAD的提示。 2、问题解决 根据错误提示&am…

网络安全与加密

1.Base64简单说明描述&#xff1a;Base64可以成为密码学的基石&#xff0c;非常重要。特点&#xff1a;可以将任意的二进制数据进行Base64编码结果&#xff1a;所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符&#xff1a;A~Z a~z 0~9 / 对文件进行base64编码…

goframe开发一个企业网站 在vue-next-admin 显示验证码 19

index.go 文件中的代码&#xff0c;我将为该文件中的主要功能和方法添加注释&#xff0c;并生成一篇 Markdown 格式的文章。这将包括对每个函数的用途、输入参数和返回值的简要说明。 index.go 包和导入 package adminimport ("context""errors""gf…

数据库的联合查询

数据库的联合查询 简介为什么要使⽤联合查询多表联合查询时MYSQL内部是如何进⾏计算的构造练习案例数据案例&#xff1a;⼀个完整的联合查询的过程 内连接语法⽰例 外连接语法 ⽰例⾃连接应⽤场景示例表连接练习 ⼦查询语法单⾏⼦查询多⾏⼦查询多列⼦查询在from⼦句中使⽤⼦查…

Oracle 23ai 对应windows版本安装配置PLSQL导入pde文件navicat连接Oracle

因为有一个pde文件需要查看里面的数据&#xff0c;所以这次需要配置本地oracle数据库&#xff0c;并且导入数据&#xff0c;因为还有navicat&#xff0c;所以就想用navicat去连接查看。 1、找到官网。 Get Started with Oracle Database 23ai | Oracle 2、下载windows版本。…

Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁

目录 本章讲述内容&#xff1a;多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁 ①. 多线程的概述 ②. 多线程的实现方式 ①. 继承Thread ②. 实现Runnable接口 ③. Callable接口(创建线程) ④. 线程池 ③. 设置和获取线程名称 ④. 线程…

一个高度可扩展的 Golang ORM 库【GORM】

GORM 是一个功能强大的 Golang 对象关系映射&#xff08;ORM&#xff09;库&#xff0c;它提供了简洁的接口和全面的功能&#xff0c;帮助开发者更方便地操作数据库。 1. 完整的 ORM 功能 • 支持常见的关系模型&#xff1a; • Has One&#xff08;一对一&#xff09; • …