Kubernetes的秘密与ConfigM是什么

  

ConfigMap和秘密是Kubernetes中两种特殊类型的存储卷,ConfigMap这种资源对象主要用于提供配置数据以定制程序行为,不过一些敏感的配置信息,比如像用户名:密码,密钥等通常都是由秘密这种资源对象来进行配置的,他们将相应的配置信息保存于对象中,而后在豆荚资源上以存储卷的形式将其挂载并获取相应配置,以实现配置与镜像文件的解耦。

一、秘密资源对象

1)秘密概述

秘密资源对象存储数据的方式是以键值对的方式进行存储的,在豆荚资源进行秘密的方式是通过环境变量或存储卷的方式进行访问数据,解决了密码,令牌,密钥等敏感数据的配置问题,而不需要将这些敏感数据暴露到镜像或者Pod的规范字段中。另外,秘密对象的数据存储和打印格式为Base64编码的字符串,因此用户在创建秘密对象时,也需要提供该类型的编码格式的数据。在容器中以环境变量或存储卷的方式访问时,会自动解码为明文格式。需要注意的是,如果是在主节点上,秘密对象以非加密的格式存储在etcd中,所以需要对etcd的管理和权限进行严格控制。

2)秘密资源的类型

秘密有四种类型:
1)服务帐户:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到豆荚的/跑步/机密/Kubernetes。io/serviceaccount目录中,
2)不透明:base64编码格式的秘密,用来存储密码,密钥,信息,证书等,类型标识符为通用的;
3) kubernetes。io/dockerconfigjson:用来存储私有码头工人注册中心的认证信息,类型标识为docker-registry;
4) kubernetes.io/tls:用于为SSL通信模式存储证书和私钥文件,命令式创建类型标识为tls;

3)创建秘密的方式

假设存储的数据是:
用户名:根
密码:123. com
以下的存储方式都是存储该信息!

1)使用,文字(文字)的方式
 <代码> [root@master ~] # kubectl创建秘密通用mysecret01——文字=用户名=root密码文字==123. com
  #创建一个秘密资源对象,名称为mysecret01,采用的加密方式是通用的(通用的,一般的加密方式)
  #注意:这种方式每一条只能保存一条信息
  (root@master ~) # kubectl mysecret01得到秘密
  的名字,,,,类型,,数据,年龄
  mysecret01,不透明,2,,,25岁的年代
  (root@master ~) # kubectl描述mysecret01秘密,,#查看该资源的详细信息
  名称:,,,,mysecret01
  名称空间:,默认的
  标签:,,,& lt; none>
  注释:& lt; none>
  
  类型:,不透明,,,,,,,,,,,,#不透明的,看不到的
  
  数据====密码:7个字节,,,,,,,,,,#只能查看键的名称,无法查看到键对应的值
  用户名:4字节
  (root@master ~) # kubectl得到秘密mysecret01 - o yaml,,,,,,
  #将该资源以yaml文件的方式进行显示
  apiVersion: v1
  数据:
  ,密码:MTIzLmNvbQ==,,,,,,,,,,,#键对应的值都是乱码,加密使用的是base64编码格式
  用户名:cm9vdA==:秘密
  元数据:
  ,creationTimestamp:“2020 - 02 - 14 - t10:08:21z"
  名称:mysecret01
  名称空间:违约
  ,resourceVersion:“2474”;
  ,selfLink:/api/v1/命名空间//机密/mysecret01违约
  uid: 1 aee0635-7bfb-4e8a-a21e-be993e534156
  类型:不透明的
  (root@master ~) # echo - n cm9vdAo=| base64 - d,,,,,,,#将乱码解码后的结果
  根
  (root@master ~) # echo - n MTIzLmNvbQ==| base64 - d
  123. com代码 
2)使用,从文件(文件)的方式

这种方式更第一种方式差不多,可能稍微显得麻烦一些!

 <代码> [root@master ~] #回声根比;用户名
  (root@master ~) #回声123. com比;密码
  #需要先将要存储的键值对写入到文件中,并且每个文件只能写入一个值
  (root@master ~) # kubectl创建通用mysecret02秘密——从文件=用户名——从文件=密码
  (root@master ~) # rm射频的用户名密码,,,,,,,
  #即使文件删除之后,该资源键对应的值依然也是存在的
  (root@master ~) # kubectl mysecret02得到秘密
  的名字,,,,类型,,数据,年龄
  mysecret02,不透明,2,,,58岁
  (root@master ~) # kubectl描述mysecret02秘密
  名称:,,,,mysecret02
  名称空间:,默认的
  标签:,,,& lt; none>
  注释:& lt; none>
  
  类型:不透明
  
  数据=https://www.yisu.com/zixun/===密码:8个字节
  用户名:5字节代码 
3)通过——from-env-file(环境变量)的方式

这种方式可以在同一个文件中写入多个键值对,推荐使用!

 <代码> [root@master ~] #三通,env。txt & lt; & lt; EOF,,,,,,#将多个需要存储的键值写入同一个文件中
  用户名=根
  密码=123. com
  EOF
  (root@master ~) # kubectl创建通用mysecret03秘密——from-env-file=env.txt
  秘密/mysecret03创建
  (root@master ~) # kubectl mysecret03得到秘密
  的名字,,,,类型,,数据,年龄
  mysecret03,不透明,2,,,19世纪
  (root@master ~) # kubectl描述mysecret03秘密
  名称:,,,,mysecret03
  名称空间:,默认的
  标签:,,,& lt; none>
  注释:& lt; none>
  
  类型:不透明
  
  数据=https://www.yisu.com/zixun/===用户名:4字节
  密码:7字节代码

Kubernetes的秘密与ConfigM是什么