当前位置: 首页 > news >正文

Secret Configmap

  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.mrgr.cn/news/38550.html

相关文章:

  • 501. 二叉搜索树中的众数
  • IEEE GRSL投稿历程分享
  • 【d53】【Java】【力扣】24.两两交换链表中的节点
  • Codeforces Round 975 (Div. 2) B. All Pairs Segments(组合数学)
  • 17.第二阶段x86游戏实战2-线程发包和明文包
  • 计算机毕业设计 智能旅游推荐平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 付费计量系统通用处理类(下)
  • Tableau数据可视化入门
  • Java_集合_单列集合Collection
  • 0101 审计的概念
  • 智慧环保大数据平台建设方案
  • C#的Socket编程细节
  • 创建javaWeb项目(详细版本)2021年2月
  • 【go入门】变量
  • 【C++笔记】初始模版和STL简介
  • 业务调度 -- 线路单板中继模式
  • 【InsCode AI】Tableau可视化—AI生成
  • 怎么选择一款适合自己的蓝牙耳机?2024开放式耳机选购指南
  • Arch - 架构安全性_传输(Transport Security)
  • MySql基础34题写题记录(3-10)