前言
在美丽中有秘密和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