k8数据持久化之秘密和configMap

  

前言

  

在美丽中有秘密和configMap这两种资源对象,这也是实现数据持久化的一种方式,与之前写过的PV或挂载目录等这些数据持久化的方式有些许不一样。

  

<强>秘密资源对象:可以保存轻量的敏感信息,比如数据库的用户名和密码或者认证秘钥等。它保存的数据是以秘文的方式存放的

  

<强> configMap资源对象:强和秘密一样,拥有大多数共同的特性,但是区别是,configMap保存的是一些不太重要的信息,它保存的数据是以明文的方式存放的。

  

当我们创建上述两种资源对象时,其实就是将这两种资源对象存储的信息写入了k8群集中的etcd数据中心。

  

一、秘密和configMap的异同点

  
相同点:
  

都是用来保存轻量级信息的,可以供其他资源对象(部署、RC、RS和POd)进行挂载使用。

  

这两种资源对象的创建方法(4种)及引用方法(2种)都是一样的,都是以键值对的方式进行存储的。

  
不同点:
  

秘密是用来保存敏感信息的,而configMap是用来保存一些不太重要的数据的,具体表现在当我们执行“kubectl描述....”命令时,秘密这种类型的资源对象时查看不到其具体的信息的,而configMap是可以查看到其保存的具体内容的。

  

二,秘密资源对象的四种创建方式

  

创建方法1(通过——文字的方式)

  
  

假设要存储的数据是:
名称:zhangsan
电话:15888888888

     
 <代码> [root@master ~] # kubectl创建秘密一般的秘密
  1——文字=name=zhangsan——文字=电话=1588888888
  (root@master ~) # kubectl得到秘密secret1 #查看创建的secret1
  名称类型数据时代
  89年代secret1不透明的2
  (root@master ~) # kubectl描述secret1秘密
  名称:secret1
  名称空间:默认
  标签:& lt; none>
  注释:& lt; none>
  
  类型:不透明的
  
  数据=https://www.yisu.com/zixun/===名称:8个字节#可以看到只能查看到其键的内容,而无法看到键对应的值
  电话:10个字节代码 
  

创建方法2(通过——从文件的方式)

  

这种方式比方法1还要麻烦一些,不建议使用。

  
 <代码> #需要先将要存储的键值对写入到文件中,并且每个文件只能写入一个值
  (root@master ~) #回声zhangsan比;的名字
  [root@master ~] #回声15888888888的在电话
  root@master ~ #猫的名字电话
  zhangsan
  15888888888
  (root@master ~) # kubectl创建通用secret2秘密——从文件=名字——从文件=电话
  #执行上述命令进行创建,然后使用方法1的命令自行查看即可 
  

创建方法3(通过——from-env-file的方式)

  

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

  
 <代码> [root@master ~] #猫比;env。txt & lt; & lt; EOF #将要存储的键值对写入文件中
  比;name=zhangsan
  比;电话号码=15888888888
  比;EOF
  (root@master ~) # kubectl创建通用secert3秘密——from-env-file=env.txt
  #执行上述命令即可以env.txt中的键值对存入k8的数据中心
  #自行查看是否创建即可 
  

创建方法4(通过yaml配置文件的方式)

  
 <代码> #可以将要存储的值加密
  (root@master ~) #回声zhangsan | base64
  emhhbmdzYW4K
  (root@master ~) # 1588888888 | base64回响
  MTU4ODg4ODg4OAo=(root@master ~) # vim的秘密。yaml #编写yaml文件
  apiVersion: v1
  :秘密
  元数据:
  名称:secret4
  数据:#下面的值是在命令行加密后的值
  名称:emhhbmdzYW4K
  电话:MTU4ODg4ODg4OAo=(root@master ~) # kubectl应用- f的秘密。yaml #执行yaml文件
  #可以使用下面的命令对加密字符进行解密
  (root@master ~) # echo - n MTU4ODg4ODg4OAo=| base64解码
  1588888888  
  

三,秘密的两种使用方式

  

既然秘密的这种存储方式是无法通过命令行查看的,再一个就是,这种存储方式的意义是什么?通过下面的使用方式,应该就可以明白其使用场景了。

  

使用方法1(以卷挂载的方式使用秘密)

  
 <代码> root@master ~ # vim secret-pod。yaml #编写yaml文件,运行一个豆荚
  
  apiVersion: v1
  :豆荚
  元数据:
  名称:secret-pod
  规范:
  容器:
  ——名称:secret-pod
  busybox映像:
  参数:
  ——/bin/sh
  - - - - - - - c
  ——睡眠10;触摸/tmp/健康;睡眠30000 #以上字段和使用秘密无关
  volumeMounts:
  ——名称:测试
  mountPath:/etc/test #指定挂载到容器内的目录
  只读的:真正的#这里决定了,是以只读的方式挂载的
  卷:
  ——名称:测试
  秘密:
  secretName: secret4 #这里指定秘密的名字,也就是我们使用第四种方法创建的秘密
  
  (root@master ~) # - f secret-pod kubectl适用。yaml #执行yaml文件
  (root@master ~) # kubectl exec - secret-pod/bin/sh #进入创建的容器/#猫/etc/test/name/etc/test/tel #查看挂载的目录下
  zhangsan
  1588888888
  #可以发现自动给我们解密了

k8数据持久化之秘密和configMap