Secret Configmap

news2024/11/17 16:21:06
  1. 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名,密码或者秘钥,讲这些信息直接保存在容器镜像中显然不合适,kubernetes提供的解决方案就是Secret

  2. Secret会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息,Secret会以Volume的形式被mount到Pod,容器可通过文件的方式使用Secret中的敏感数据,此外,容器也可以环境变量的方式使用这些数据

  3. Secret可通过命令行或者yaml创建,比如希望Secret中包含如下信息:用户名admin,密码123456

  4. 创建Secret,有四种方法:

    1. 通过-- from-literal:kubectl create secret generic mysecret --from-literal=username=admin --from-literal=password=123456,每个–from-literal对应一个信息条目
    2. 通过–from-file:echo -n admin > ./username echo -n 123456 > ./password .
      1. kubectl create secret generic mysecret --from-file=./username --from-file=./password
      2. 每个文件内容对应一个信息条目
    3. 通过–from-env-file
      1. cat << EOF > env.txt username=admin password=123456 EOF
      2. kubectl create secret generic mysecret --from-env-file=env.txt
      3. 文件env.txt中每行key=value对应一个信息条目
    4. 通过YAML配置文件
      1. 在这里插入图片描述

      2. 文件中的敏感数据必须是通过base64编码后的结果在这里插入图片描述

      3. 执行kubectl apply创建Secret在这里插入图片描述

  5. 查看Secret

    1. 通过kubectl get secret查看存在的secret在这里插入图片描述

    2. 显式有两个数据条目,通过kubectl describe secret查看条目的key在这里插入图片描述

    3. 如果还想查看Value,可以用kubectl edit secret mysecret在这里插入图片描述

    4. 然后通过base64将value反编码在这里插入图片描述

  6. 在Pod中使用Secret

    1. Pod可以通过Volume或者环境变量的方式使用Secret

    2. Volume方式

      1. 在这里插入图片描述

        1. 定义volume foo,来源为secret mysecret
        2. 将foo mount到容器路径/etc/foo。可指定读写权限为readOnly
      2. 创建Pod并在容器中读取Secret在这里插入图片描述

        1. Kubernetes会在指定的路径/etc/foo下为每条敏感数据创建一个文件,文件名就是数据条目的Key,这里是/etc/foo/username和/etc/foo/password,value则以明文存放在文件中
      3. 可以自定义存放数据的文件名,在这里插入图片描述

        1. 这时数据将分别存放在/etc/foo/my-group/my-username和/etc/foo/my-group-password中,

        2. 以volume方式使用的Secret支持动态更新,Secret更新后,容器中的数据也会更新

        3. 将password更新为abcdef,base64编码为YWJjZGVm在这里插入图片描述

        4. 更新Secret在这里插入图片描述

        5. 几秒钟后,新的password会同步到容器在这里插入图片描述

    3. 环境变量方式

      1. 通过Volume使用Secret,容器必须从文件读取数据,Kubernetes还支持通过环境变量使用Secret在这里插入图片描述

        1. 创建Pod并读取Secret在这里插入图片描述

        2. 通过环境变量SECRET_USERNAME和SECRET_PASSWORD,成功读取到Secret的数据

      2. 环境变量读取Secret很方便,但无法支撑Secret动态更新

  7. ConfigMap

    1. Secret可以为Pod提供密码,Token,私钥等敏感数据,对于一些非敏感的数据,比如应用的配置信息,则可以使用ConfigMap

    2. configMap的创建和使用方式与Secret类似,主要不同的是数据以明文的形式存放

    3. ConfigMap支持四种创建方式

      1. 通过–from-literal
        1. kubectl create configmap myconfigmap --from-literal=config1=xxx–from-literal=config2=yyy
        2. 每个–from-literal对应一个信息条目
      2. 通过–from-file
        1. echo -n xxx > ./config1
        2. echo -n yyy > ./config2
        3. kubectl create configmap myconfigmap --from-file=./config1 --from-file=./config2
        4. 每个文件内容对应一个信息条目
      3. 通过–from-env-file
        1. cat < env.txt config1=xxx config2=yyy EOF
        2. kubectl create configmap myconfigmap --from-env-file=env.txt
        3. 文件env.txt中每行key=value对应一个信息条目
      4. 通过YAML配置文件,文件中的数据直接以明文输入
        1. 在这里插入图片描述
    4. 与Secret一样,Pod也可以通过Volume或者环境变量的方式使用Secret

      1. Volume方式在这里插入图片描述

      2. 环境变量方式在这里插入图片描述

      3. 大多数情况下,配置信息都是以文件形式提供,所以在创建configmap时通常采用–from-file或YAML方式,读取configmap时通常采用Volume方式,比如给Pod传递如何记录日志的配置信息

        1. 在这里插入图片描述

        2. 可以采用–from-file形式,将其保存在文件logging.conf中,然后执行命令

          1. kubectl create configmap mycnfigmap --from -file=./logging.conf
        3. 如果采用YAML配置文件

          1. 在这里插入图片描述

          2. 创建并查看ConfigMap在这里插入图片描述

          3. 在Pod中使用此ConfigMap在这里插入图片描述

            1. 在volume中指定存放配置信息的文件相对路径为myapp/logging.conf
            2. 将volume mount到容器的/etc目录
          4. 创建Pod并读取配置信息在这里插入图片描述

          5. 配置信息已经保存到/etc/myapp/logging.conf文件中,Volume形式的Configmap也支持动态更新

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

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

相关文章

基于php的医院信息管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

NLP:BERT的介绍

1. BERT 1.1 Transformer Transformer架构是一种基于自注意力机制(self-attention)的神经网络架构&#xff0c;它代替了以前流行的循环神经网络和长短期记忆网络&#xff0c;已经应用到多个自然语言处理方向。   Transformer架构由两个主要部分组成&#xff1a;编码器(Encod…

《向量数据库指南》——Zilliz Cloud Serverless版震撼发布:弹性伸缩,成本直降50倍

在数据驱动的时代背景下,向量数据库作为处理复杂非结构化数据(如图像、视频、音频及文本等)的关键技术,正逐步成为推动人工智能、机器学习以及大数据分析等领域发展的核心力量。随着数据量的爆炸性增长和查询需求的多样化,如何高效地管理并利用这些数据成为了企业和开发者…

如何回答:count(*) 和 count(1)的区别

感谢Java面试教程的Java多线程文章&#xff0c;点击查看>原文 在SQL查询中&#xff0c;count(*) 和 count(1) 都是用于统计表中行数的聚合函数&#xff0c;它们的主要区别在于语法和执行效率上。 语法上的区别&#xff1a; count(*)&#xff1a;直接统计表中的所有行数&…

RabbitMQ的各类工作模式介绍

简单模式 P: ⽣产者, 也就是要发送消息的程序 C: 消费者,消息的接收者 Queue: 消息队列, 图中⻩⾊背景部分. 类似⼀个邮箱, 可以缓存消息; ⽣产者向其中投递消息, 消费者从其中取出消息.特点: ⼀个⽣产者P&#xff0c;⼀个消费者C, 消息只能被消费⼀次. 也称为点对点(Point-to-…

[CKA]CKA预约和考试

CKA预约和考试 一、预约 1、登录Linux Foundation https://trainingportal.linuxfoundation.org/learn/dashboard 2、首页点 "Resume"进行预约 3、进入考试准备界面后&#xff0c;按要求分别验证 Agree to Global Candidate Agreement&#xff08;同意全球候选人协…

nodejs逐字读取文件示例

像chatpGPT显示文字一样.主要是服务器流式返回数据.前端用for await读取response.body <button id"fetchjson" onclick"FetchJSON()">fetch json看console与network</button> <button id"fetchstream" onclick"FetchStrea…

基于php的民宿预订管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

[SAP ABAP] SELECT-OPTIONS

基本语法 SELECT-OPTIONS <sel> FOR <f>. 示例1 输出结果&#xff1a; 点击右边的 按钮&#xff0c;将弹出多项数值输入界面&#xff0c;如下图所示 示例2 数据准备 学生表(ZDBT_STU_437) 学生表(ZDBT_STU_437)数据明细 输出结果&#xff1a; OBLIGATORY参数用于…

RTA-OS Port Guide学习(三)-基于S32K324 OS

文章目录 前言HardwareSupported DevicesRegister UsageInitializationModificationRequired OS resourcesInterruptsInterrupt Priority LevelsAllocation of ISRs to Interrupt VectorsVector TableWriting Category 1 Interrupt HandlersWriting Category 2 Interrupt Handl…

ECCV`24 | 高保真目标修复新SOTA!复旦智象开源CAT-Diffusion,语义视觉双一致

文章链接&#xff1a;https://arxiv.org/pdf/2409.08260 Github链接&#xff1a;https://github.com/Nnn-s/CATdiffusion 总结速览 解决的问题: 单一U-Net在所有去噪步骤中对齐文本提示和视觉对象不足以生成期望的对象。 扩散模型的复杂采样空间中无法保证对对象生成的可控性…

基于php的助农生鲜销售系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

Elasticsearch7.7设置账号密码时的逻辑矛盾问题和文章相关评论

一、Elasticsearch7.7设置账号密码时的逻辑矛盾问题 publish:June 19, 2020 -Friday 2019年1月30日&#xff0c;外媒又报道了一起Elasticsearch数据泄露事件&#xff01;2019年1月份的至少有6起Elasticsearch数据泄露事件了。原因何在&#xff0c;很简单&#xff0c;开发者在服…

数据的表示和存储 第3讲 C语言中的整数

深耕AI ​互联网行业 算法研发工程师 概括 本讲主要介绍了C语言中的整数表示。 无符号整数能够表示的最大值比带符号整数要大。带符号整数使用补码来表示&#xff0c;补码的运算系统是一种模运算系统&#xff0c;能够实现加减运算的统一。在C语言中&#xff0c;如果一个表达式…

7.MySQL内置函数

目录 日期函数时间函数字符串函数数学函数其他函数 日期函数 函数名称描述current_date()当前日期current_time()当前时间current_timesamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date, interval d_value_tyep)在date中添加日期函数或时间。interval后…

JMeter压测HTTPS 在window 11处理SSL证书认证

在此位置&#xff0c;找到chrome 的证书 证书到出到指定的路径&#xff0c; 利用jdk中的keytool.exe工具&#xff0c;重新生成证书 crm 去到命令窗口&#xff0c;再去到JDK路径下&#xff0c;如下 输入 keytool -import -alias “zhengshu.store” -file “D:\Program F…

HarmonyOS鸿蒙系统开发应用程序,免费开源DevEco Studio开发工具

DevEco Studio 是华为为 HarmonyOS 和 OpenHarmony 开发者提供的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它基于 IntelliJ IDEA Community 版本打造&#xff0c;提供了代码编辑、编译、调试、发布等一体化服务。 一、DevEco Studio支持系统 DevEco Studio支持…

63.【C语言】再议结构体(上)

1.复习 20.【C语言】初识结构体&#xff08;重要&#xff09; 48.【C语言】结构体补充 2.结构体的特殊声明 01.匿名结构体 *定义 不完全声明,即结构体没有自己的名字(没有结构体标签) *注意事项 1.匿名结构体只能使用一次 2.下列代码合法吗 struct {int a;char b;floa…

使用python获取百度一下,热搜TOP数据详情

一、查找对应链接 # 警告&#xff1a;以下代码仅供学习和交流使用&#xff0c;严禁用于任何违法活动。 # 本代码旨在帮助理解和学习编程概念&#xff0c;不得用于侵犯他人权益或违反法律法规的行为。 1、打开百度页面 百度一下&#xff0c;你就知道 2、点击F12 或 右键鼠标…

text2sql方法:NatSQL和DIN-SQL

NatSQL NatSQL出自2021年9月的论文《Natural SQL: Making SQL Easier to Infer from Natural Language Specifications》(github)&#xff0c;它是一种SQL 中间表征(SQL intermediate representation(IR))方法。 NatSQL作者认为Text2SQL的关键挑战是自然语言描述和其对应的SQ…