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

news2024/11/27 1:21:23
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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(原创)Android Studio新老界面UI切换及老版本下载地址

前言 这两天下载了一个新版的Android Studio,发现整个界面都发生了很大改动: 新的界面的一些设置可参考一些博客: Android Studio新版UI常用设置 但是对于一些急着开发的小伙伴来说,没有时间去适应,那么怎么办呢&am…

贵州茅台[600519]行情数据接口

贵州茅台:实时行情 Restful API # 测试接口:可以复制到浏览器打开 https://tsanghi.com/api/fin/stock/XSHG/realtime?tokendemo&ticker600519获取股票实时行情(开、高、低、收、量)。 请求方式:GET。 Python示例…

MacOS系统上Jmeter 录制脚本遇到的证书坑位

一、JMeter介绍与安装 1,下载及安装 jmeter官网地址 二、录制百度链接https请求时,需要导入jmeter相关证书到macos系统的更目录中. 导入方式,直接拖入mac的系统中,始终新人就可以; 三、jmeter 创建相关的录制组件…

【ArcGISPro】Sentinel-2数据处理

错误 默认拉进去只组织了4个波段,但是实际有12个波段 解决方案 数据下载 Sentinel-2 数据下载-CSDN博客 数据处理 数据查看 创建镶嵌数据集 在数据管理工具箱中找到创建镶嵌数据集

音视频处理PCM相关概念:帧(Frame)、周期(Period Size)、量化、 声道数(Channels)、采样位数(Sample Bits)、采样频率

文章目录 引言I PCM相关图表原始模拟音频数据:模拟信息按照固定频率进行采样对采样后的数据选择合适精度进行量化PCM数据流II PCM相关概念采样频率:单位时间内对模拟信号的采样次数采样位数(Sample Bits)声道数(Channels)音频数据大小计算量化编码III 其他相关参数帧(Fra…

小米note pro一代(leo)线刷、twrp、magisk、TODO: android源码编译

本文主要说android5 整体思路 android 5.1 twrp magisk Zygisk(Riru) Dreamland(xposed) Riru不支持android5.1, 因此只能选择Zygisk : 如果你正在使用 Android 5,你必须使用 Zygisk 因为 Riru 并不支持 Android 5. 基于magisk之上的xposed 其中提到的 作者…

React表单联动

Ant Design 1、dependencies Form.Item 可以通过 dependencies 属性,设置关联字段。当关联字段的值发生变化时,会触发校验与更新。 一种常见的场景:注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段&#x…

【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 💯前言💯准确引导ChatGPT创建爆款小红书文案GPTs指令案例💯 高效开发GPTs应用的核心原则明确应用场景和目标受众构建多样化风格模板提问与引…

Easyexcel(6-单元格合并)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽)Easyexcel(6-单…

从零开始打造个人博客:我的网页设计之旅

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏&#xff1a…

数据库-MySQL-Mybatis源码解析-设计模式角度

文章目录 前言一、工厂模式二、单例模式三、建造者模式四、模板模式五、代理模式六、装饰器模式七、总结 前言 Mybatis是一个比较主流的ORM框架,所以在日常工作中接触得很多。能写出这种框架的作者肯定有其独特之处。阅读优秀框架的源码,如果能看懂些巧…

【K8S问题系列 |18 】如何解决 imagePullSecrets配置正确,但docker pull仍然失败问题

如果 imagePullSecrets 配置正确,但在执行 docker pull 命令时仍然失败,可能存在以下几种原因。以下是详细的排查步骤和解决方案。 1. 检查 Docker 登录凭证 确保你使用的是与 imagePullSecrets 中相同的凭证进行 Docker 登录: 1.1 直接登录…

[工具分享] 根据Excel数据根据Word文档模板,批量创建生成Word文档并重命名,方便快速查找打印

前几天交楼的小姐姐要多份Word文档合同打印给客户,那么100份就需要修改100次 上面好多都是模板的制式文件,里面的部分数据都是要根据实际值来变动的, 那么有没有快速的方法来操作呢,还是只能一个个手动的改,又容易出…

嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点

目录 一、static 1、static 修饰局部变量 2、 static 修饰全局变量 3、static 修饰函数 4、static 修饰类成员 5、小结 二、const 1、const 修饰普通变量 2、const 修饰指针 3、const 修饰函数参数 4. const 修饰函数返回值 5. const 修饰类成员 6. const 与 #defi…

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证,回顾从IA到IE的学习和项目实战,想整合和分享自己的学习历程,欢迎志同道合的朋友们一起讨论! 第三章:常见设备 交换机 二层交换机和三层交换机,所谓二层交换机…

基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器,2FSK 的两个频率为:fI15KHz,f23KHz,波特率为 1500 bps,比特0映射为f 载波,比特1映射为 载波。 1&#xff09…

网络安全与加密

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

Python绘制太极八卦

文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…

C 语言面向对象

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

滑动窗口最大值(java)

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7]…