当需要存储敏感数据时可以使用,secret会以密文的方式存储数据。

创建secret的四种方法

(1)通过--from-literal

#每个--from-literal对应一个信息条目

kubectl create secret generic mysecret --from-literal=username=admin --from-literal=password=123456

(2) 通过--from-file

#每个文件内容对应一个信息条目。

[root@k8s-master ~]# echo -n admin > ./username

[root@k8s-master ~]# echo -n 123456 > ./password

[root@k8s-master ~]# kubectl create secret generic mysecret1 --from-file=./username --from-file=./password

secret/mysecret1 created

[root@k8s-master ~]#

(3)通过--from-env-file

#文件env.txt中每行Key=Value对应一个信息条目

[root@k8s-master ~]# cat <<EOF > env.txt

> username=admin

> password=123456

> EOF

[root@k8s-master ~]# kubectl create secret generic mysecret2 --from-env-file=env.txt

secret/mysecret2 created

[root@k8s-master ~]#

(4)通过YAML配置文件

文件中的敏感数据必须是通过base64编码后的结果

在k8s中使用secret存储敏感数据与四种用法_敏感数据

在k8s中使用secret存储敏感数据与四种用法_linux_02

通过kubectl describe secret查看条目的Key

在k8s中使用secret存储敏感数据与四种用法_敏感数据_03

使用 kubectl edit secret mysecret查看value

在k8s中使用secret存储敏感数据与四种用法_kubernetes_04

过base64将Value反编码

在k8s中使用secret存储敏感数据与四种用法_linux_05

当pod挂载secret后, Value则以明文存放在容器挂载的路径文件中

在k8s中使用secret存储敏感数据与四种用法_docker_06

默认情况下会以 数据条目的Key作为文件名

自定义存放数据的文件名

在k8s中使用secret存储敏感数据与四种用法_文件名_07

配置pod使用环境变量方式使用secret

在k8s中使用secret存储敏感数据与四种用法_docker_08

在k8s中使用secret存储敏感数据与四种用法_docker_09

缺点:环境变量方式无法支持secret动态更新