说一下这个Kubernetes 1.19.0——密码管理

创建secret

使用MySQL创建一个pod出来

这里直接显示出密码redhat,并不安全
Secret有三种类型: 
Opaque:base64编码格式的Secret,用来存储密码、密钥等;但数 
据也通过base64 –decode解码得到原始数据,所有加密性很弱。 
kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证 
信息。 
kubernetes.io/service-account-token: 用于被serviceaccount引用。 
serviceaccout创建时Kubernetes会默认创建对应的secret。Pod如果 
使用了serviceaccount,对应的secret会自动挂载到Pod目录 
/run/secrets/ kubernetes.io/serviceaccount中。

通过查询help将创建secret的命令复制出来并成功创建

通过 kubectl describe secrets查看其属性,这里表示k1和k2都有7个字节
通过kubectl get secrets mysecret1 -o yaml获取值,被Base64编码后的值

可用echo xxxx | base64 -d进行解码,这里不作演示

也可以通过file文件的方式来创建,但是相对来说不如前一种命令行便捷
还可以通过env的方式创建,但实际还是不如第一种命令行来的方便
还可以通过yaml文件的方式进行创建
直接通过kubectl delete secrets 名字进行删除

使用secret

以卷的方式来挂载

主要用于传递配置文件

会将secret下的k1和k2当成两个文件写到pod中挂载的目录/xx下
创建了2个文件有何意义?

由上两张图可知,也可以将文件传递至pod的目录下
那如果只想传递一个文件呢?

只需对yaml稍加改动,添加subPath字段
现在将pod里面的nginx的配置文件拷贝出来,作一些修改,添加一些注释
修改一下yaml,用刚创建的myconf,将修改后的nginx.conf传递至pod并挂载到mountPath
成功传递
如果我们下载一个镜像,里面的配置文件不满足我们需求,那我们可以用以上方法重新定义配置文件然后通过secret方式传递过去

以变量的方式来挂载

给pod传递变量

通过修改配置配件可以引用mysecret1中的变量
因为k1的值我们事先知道是redhat1,这里通过valueFrom的引用登录成功

configmap

还可通过configmap的形式创建
还可通过configmap的形式创建
通过编写配置文件configMap也成功将变量传递至pod指定目录下
也可以将自己修改的配置文件传递过去,方法同前面nginx一样,这里不作演示

由上两张图看出,这里通过configMap传递密码,效果也是一样的
总结:
Secret和configMap用法基本类似,但是对于configMap来说都是以明文的方式存储
对于secret都是经过了base64编码

正文完