K8s: ConfigMap 与 Secret 的配置管理

(k8s)kubernetes中ConfigMap和Secret ConfigMap是一种API对象,用来将非机密性的数据保存到键值对中。使用时,Pod可以将其用作环境变量、命令行参数或存储卷中的配置文件。ConfigMap将你的环境配置信息和容器镜像解耦,便于应用配置的修改。注意:ConfigMap并不提供保密或加密功能。如果你想存储的数据是机密性的,请使用Secret,或者使用其他第三方工具来保存你的数据的私密性,而不是用ConfigMap。 阅读详情

配置管理


  • 研究的是配置和应用如何分离
  • 如何把跟应用无关的配置给它抽离出来,让它在不同的环境中运行

ConfigMap 配置

  • ConfigMap

    • API对象,它用于把环境变量和容器镜像进行解耦
    • 它不提供加密的功能,如果要存机密数据请用secret
    • 场景
      • 比如在连接数据库时,database, host, port 等
      • 修改源码的方式是非常不可取的,需要将这类文件写入ConfigMap中
      • 并将配置项作为环境变量,注入到容器里面,来覆盖代码中的变量
    • 示例
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: appvar
      data:
        # 类属性键;每一个键都映射到一个简单的值
        player_initial_lives: "3"
        ui_properties_file_name: "user-interface.properties"
        #
        # 类文件键
        game.properties: |
          enemy.types=aliens,monsters
          player.maximum-lives=5
        user-interface.properties: |
          color.good=purple
          color.bad=yellow
          allow.textmode=true
      
      • 这是一个game游戏的一个demo,定义了一系列的这个数据
      • 一些和环境相关的配置,可以放到 ConfigMap 里面
  • 可以使用四种方式来使用 ConfigMap 配置 Pod 中的容器:

    • 1 )容器 entrypoint 的命令行参数
    • 2 )容器的环境变量去覆盖
    • 3 )在只读卷里面添加一个文件,让 ConfigMap Read from File
    • 4 )编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap
  • 注意

    • 这些不同的方法适用于不同的数据使用方式
    • 对前三个方法,kubelet 使用 ConfigMap 中的数据在Pod 中启动容器
    • 第四种方法意味着你必须编写代码才能读取 ConfigMap 和它的数据
      • 然而,由于是直接使用Kubernetes API,因此只要 ConfigMap 发生更改
      • 你的应用就能够通过订阅来获取更新,并且在这样的情况发生的时候做出反应
      • 通过直接进入 Kubernetes API
      • 这个技术也可以让你能够获取到不同的命名空间里的 ConfigMap
  • 基于环境变量方式使用ConfigMap示例

    • envFrom字段,可以实现在Pod环境中
    • 将ConfigMap中所有定义的key=value自动生成为环境变量
    • $ vi cm-demo1.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: appvar
      data:
        apploglevel: info
        appdatadir: /var/data
      ---
      apiVersion: v1
      kind: Pod
      metadata:
        name: pod-test
      spec:
        containers:
        - name: test
          image: busybox
          command: ["sh", "-c", "env | grep app"]
          envFrom:
          - configMapRef:
              name: appvar
        restartPolicy: Never
      
    • $ kubectl apply -f cm-demo1.yaml
      configmap/appvar created
      pod/pod-test created
      
    • $ kubectl get pod pod-test
      NAME       READY   STATUS      RESTARTS   AGE
      pod-test   0/1     Completed   0          4m12s
      
    • $ kubectl logs pod-test
      apploglevel=info
      appdatadir=/var/data
      
      • 这里可以看到,在pod中输出了环境变量
    • $ kubectl get configmap | grep app
      appvar             2      7m20s
      
    • $ kubectl describe configmap appvar
      Name:         appvar
      Namespace:    default
      Labels:       <none>
      Annotations:  <none>
      
      Data
      ====
      appdatadir:
      ----
      /var/data
      apploglevel:
      ----
      info
      
      BinaryData
      ====
      
      Events:  <none>
      
  • 注意

    • 环境变量的名称受POSIX命名规范约束,不能以数字开头
    • 如果配置中包含非法字符,系统将会跳过该条环境变量的创建
    • 并记录一个Event用来提醒用户环境变量无法生成
    • 但并不阻止Pod的启动

Secret 配置

  • Secret 管理密钥

    • 比如说数据库的 password,这属于密文
    • 不应该写在代码里面,也不应该公开出来
  • 要使用 Secret,Pod 需要引用 Secret,Pod 可以用三种方式之一来使用 Secret

    • A )作为挂载到一个或多个容器上的 卷 中的文件
    • B )作为容器的环境变量
    • C )由 kubelet 在为 Pod 拉取镜像时使用

创建Secret的两种方式

1 )直接通过命令创建

  • $ kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb='
    secret/dev-db-secret created
    

2 )通过文件来创建秘钥

  • 先创建两个文件
    echo -n 'admin' > /tmp/username.txt
    echo -n 'xxds21f2dsw21e2e67df' > /tmp/password.txt
    
  • 再基于文件来创建 secret
    • $ kubectl create secret generic db-user-pass --from-file=/tmp/username.txt --from-file=/tmp/password.txt
      secret/db-user-pass created
      
    • 创建完成后,文件就可以删除了

3 )查看秘钥

  • 秘钥创建完了,不管哪种方式查看秘钥都一样,用第二种方式创建的秘钥来举例
  • 获取 secret $ kubectl get secret | grep db
    db-user-pass          Opaque                                2      6m29s
    
  • 查看具体信息 $ kubectl describe secret db-user-pass
    Name:         db-user-pass
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    
    Type:  Opaque
    
    Data
    ====
    password.txt:  20 bytes
    username.txt:  5 bytes
    
  • 默认情况下,kubectl get 和 kubectl describe 避免显示密码的内容
  • 这是为了防止机密被意外地暴露给旁观者或存储在终端日志中
六、Kubernetes配置管理ConfigMap、Secret 应用部署的一个最佳实践是将应用所需的配置信息与程序分离,这样可以使应用程序被更好地复用,通过不同的配置也能实现更灵活的功能。将应用打包为容器镜像后,可以通过环境变量或者外挂文件的方式在创建容器时进行配置注入,但在大规模容器集群的环境中,对多个容器进行不同的配置将变得非常复杂。配置管理问题风险:配置文件写在代码里,管理不方便,且有风险。 配置文件分离,是主要作用,独立配置文件,管理和操作都方便。如果有热加载,变更配置文件,不需要影响pod。ConfigMap用于明文配置文件,redis文件等。Secret用于 阅读详情

相关推荐

K8s 配置管理:ConfigMap 与 Secret 生产级专业指南

✅ 启用 etcd Encryption✅ Secret 最小权限 RBAC✅ 禁止明文 Secret 入 Git✅ 定期轮换凭据ConfigMap 与 Secret 不是 YAML 技巧,而是架构能力。当你把配置当成“一等公民”来设计,Kubernetes 才真正进入生产成熟期。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 906

【云原生】kubernetes管理应用配置之ConfigMap和Secret

将应用打包为容器镜像后,可以通过环境变量或者外挂文件的方式在创建容器时进行配置注入,但在大规模容器集群的环境中,对多个容器进行不同的配置将变得非常复杂。的方式访问到这些 Secret 里保存的信息了。应用部署的一个最佳实践是将应用所需的配置信息与程序进行分离,这样可以使得应用程序被更好地复用,通过不同的配置也能实现更灵活的功能。创建ConfigMap后,数据实际会存储在K8s中Etcd,然后通过创建Pod时引用该数据。,通过Volume挂载的方式将ConfigMap中的内容挂载为容器内部的文件或目录。

康师傅没有眼泪 1127

K8s -- configMap配置管理 、Secret配置管理

清理实验环境 configMap配置管理 使用字面值创建 使用文件创建使用目录创建 $ kubectl create configmap my-config-3 --from-file=test 目录中文件名为key,文件内容是value 编写configmap的yaml文件 删除calico网络策略 使用configmap设置环境变量 使用conigmap设置命令行参数 通过数据卷使用configmap configmap热更新...

ly660402的博客 1564

【Kubernetes知识点问答题】ConfigMaps / Secrets

ConfigMap 的作用 Secret Secret 的优点 ConfigMap

Songyaxuan075118的博客 608

kubernetes存储—Configmap配置管理介绍、创建、如何使用configmap、configmap热更新、Secret配置管理的简介、类型、如何使用secret

1.configmap配置管理 简介: <1> Configmap用于保存配置数据,以键值对形式存储。 <2> configMap 资源提供了向 Pod 注入配置数据的方法。 <3> 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。 <4> 典型的使用场景: (1)填充环境变量的值 (2)设置容器内的命令行参数 (3)填充卷的配置文件 configmap的创建: 创建ConfigMap的方式有4种: <1> 使用字面值创建 &lt

xy_的博客 750

十二、K8S-配置管理ConfigMap、Secret

如果引用Secret数据的应用,会随着secret资源对象内保存的数据的更新,而实时更新,那么应该使用volumes挂载的方式引用资源,因为环境变量的方式引用不会实时更新数据。ConfigMap和Secret的区别:

爱吃西红柿的博客 1536

简述 Kubernetes ConfigMap 和 Secret

简述 kubernetes 中的配置对象 ConfigMap 和 Secret

u011447403的专栏 693

Kubernetes配置管理实践指南:从ConfigMap到Secret

本文还有配套的精品资源,点击获取 简介:Kubernetes作为领先的容器编排系统,其配置管理对确保服务稳定性至关重要。本文深入探讨了Kubernetes配置库的概念,涵盖ConfigMap和Secret的创建与应用,以及如何通过GitOps模式实现配置的集中管理、自动化部署和版本控制。文章强调了配置数据的存储、加密和生命周期管理的重要性,以及配置库在大规模集群环境中的作用...

weixin_42603332的博客 1158

Kubernetes配置与密钥管理ConfigMap&Secret

Opaque(不透明的),用来存储密码、密钥、敏感信息、证书等,base64编码格式的Secret,符合这种需求的都可以使用。Opaque 是最常见的 Secret 类型,它通常用于存储任意的键值对,这些键值对可以是配置信息、密码、令牌等。Secret与ConfigMap类似,主要区别是ConfigMap存储的是明文,而secret存储的是密文。可以实现将应用程序的配置信息与容器镜像分离,以便在不重新构建镜像的情况下进行配置的修改和更新。用于为SSL通信模式存储证书和私钥文件,命令式创建类型标识为tls。

2402_88627342的博客 1263

高通平台camera构架sensor驱动详解

优先阅读。

a5566255的专栏 3253

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧

本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。

o0p1q2r3的博客 553

K8S配置管理:ConfigMap与Secret

在前面的两篇文章()中我们学习了Kubernetes 里的三种 API 对象:Pod、Job 和 CronJob,虽然没有比其他对象更高级,但使用它们也可以在集群里编排运行一些实际的业务了。不过想让业务更顺利地运行,有一个问题不容忽视,那就是应用的配置管理。配置管理是一个至关重要的环节。想象一下,你开发了一个超棒的微服务应用,它依赖于数据库连接地址、各种密钥以及一些个性化的配置参数。当你把这个应用容器化并部署到 K8S 集群中时,如果这些配置信息都硬编码在容器镜像里,那后续的维护和升级工作将会是一场噩梦。

m0_71836706的博客 961

使用STC15F104W产生PWM脉冲

最近的小项目中使用到了STC15F104W产生PWM脉冲

yeats1989的专栏 1万+

k8s配置管理——secret与configmap

当需要修改很多配置文件时,创建一个配置资源,将配置资源挂载到各个pod当中,给pod所使用,这样就只要修改配置资源就可以了Secret 解决了密码、token、秘钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用。secret 可选参数有三种:Secret 类型:Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:应用场景:官方网站:Secrets | Kubernetes1.创

WuDan_1112的博客 1852

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1709

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航

在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图

weixin_42615290的博客 886

Kubernetes配置管理全攻略:ConfigMap与Secret详解

Configmap 是 k8s 中的资源对象,用于保存非机密性的配置的,数据可以用 key/value 键值对的形式保存,也可通过文件的形式保存。用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 的容器里挂载 Volume 的方式或者环境变量的方式访问到这些 Secret 里保存的信息了。Secret 类似于 ConfigMap,但专门用于保存机密数据。

2503_91960880的博客 1199

单片机:实现FFT快速傅里叶变换算法(附完整源码)

单片机:实现FFT快速傅里叶变换算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1104

k8s配置管理--configmap与secret

k8s中configmap和secret使用

大风车儿的博客 20万+

利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案

tokenizer将输入的文本列表texts转换为 PyTorch 张量,同时进行填充和截断操作,以确保所有输入具有相同的长度。对输入进行推理,得到模型的输出。对模型的最后一层隐藏状态求平均,得到每个文本的向量表示。.numpy()将 PyTorch 张量转换为 NumPy 数组。使用DBSCAN算法对文本向量进行聚类。eps是邻域半径,是形成核心点所需的最小样本数。fit方法对输入的向量进行聚类,并返回每个样本所属的簇标签。try:定义了一个 POST 请求的 API 路由,路径为。

AI的内部世界的博客 1069

在 SAP SD(销售与分销)模块中,销售合同 / 订单的抬头(Header) 和行项目(Item) 核心数据表如下,按 “核心表 + 扩展表” 分类说明,同时区分销售合同(Contract,类型 W

SAP SD模块中销售合同/订单的核心数据表分为抬头和行项目两类。核心抬头表包括VBAK(基础数据)和VBUK(状态数据),核心行项目表包括VBAP(基础数据)和VBUP(状态数据)。扩展表包含VBAKE(抬头增强)、VBAPe(行项增强)、VBEP(计划行)、VBFA(凭证流)等。销售合同(WK/WC)和订单(OR)通过VBAK-AUART字段区分,核心表结构相同。查询时需注意单据类型筛选,并通过VBELN主键关联抬头和行项数据,KNUMV关联定价条件,VBFA表追踪凭证流。

金牌架构师 1091

自动化运维之k8s——kubernetes存储、Configmap配置管理、Secret配置管理、Volumes配置管理、kubernetes调度、PV PVC、kubernetes访问控(未完待续)

一、Configmap配置管理 Configmap用于保存配置数据,以键值对形式存储。 configMap 资源提供了向 Pod 注入配置数据的方法。 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。 典型的使用场景: (1)填充环境变量的值 (2)设置容器内的命令行参数 (3)填充卷的配置文件 二、Secret配置管理 三、Volumes配置管理 四、PV PVC ...

Zhaohui_Zhang的博客 1227

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

K8s核心技术配置管理Secret 和ConfigMap

K8s核心技术配置管理SecretSecret步骤创建secret加密数据通过挂载使用以变量形式挂载到pod容器中编写yaml文件创建pod进入容器中查看是否存在这个值以volume数据卷的形式挂载到pod容器中查看挂载卷ConfigMap创建配置文件以volume形式挂载到pod容器中以变量形式挂载到pod容器中创建yaml文件,声明变量信息。configmap创建以变量形式挂载查看日志 Secret 作用:加密数据存储在etcd中,让pod容器以挂载volume的方式访问。 场景: 凭证 base64编

weixin_45181388的博客 542

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

kubernetes集群实战——Configmap配置管理和Secret配置管理

1.ConfigMap配置管理 configmap用于保存配置数据,以键值对形式存储。 configMap 资源提供了向 Pod 注入配置数据的方法。 旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。 典型的使用场景: • 填充环境变量的值 • 设置容器内的命令行参数 • 填充卷的配置文件 2.创建ConfigMap的方式 4种方式: • 使用字面值创建 • 使用文件创建 • 使用目录创建 • 编写configmap的yaml文件创建 2.1使用字面值创建 kubectl create conf

weixin_45792518的博客 522

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: K8s: PersistantVolume, PersistentVolumeClaim, Storage Class的相关概念与应用
下一篇: K8s: 最佳实践经验之谈
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值