文章目录
实验环境
完成初始化集群的环境:
(vms21)192.168.26.21——master1
(vms22)192.168.26.22——worker1
(vms23)192.168.26.23——worker2
我们创建pod的时候,有些pod里是需要去引用密码的,如容器里用到mysql,则需要去指定mysql密码,等等这些密码在pod里是以引用的方式来存储的,这样或多或少会有安全隐患,因此,我们需要有更好的方案去管理密码
一、secret
secret里的存储的数据都是以键值对的方式存储的(键=值)
1.创建
a.命令行方式创建(推荐)
方式一:创建secret,并赋上键值对
#--from-literal后的“=”可以省略
kubectl create secret generic [secret名字] --from-literal=[键]=[值]
#可以有多个键值对
kubectl create secret generic [secret名字] --from-literal=[键]=[值] --from-literal=[键]=[值]
方式二:以一个文件路径的方式存储
以文件路径存储时,会以路径的basename作为键,以文件的内容作为值
什么是basename,什么是dirname?
basename——一个路径的最后一部分
dirname——一个路径除了basename的部分
如一个文件的路径为 “/usr/share/doc/pam-1.1.8/txts/README.pam_access”
basename /usr/share/doc/pam-1.1.8/txts/README.pam_acces
#输出:
README.pam_acces
dirname /usr/share/doc/pam-1.1.8/txts/README.pam_acces
#输出:
/usr/share/doc/pam-1.1.8/txts
以路径方式存储:
kubectl create secret generic [secret名字] --from-file [路径] --from-file [路径]
#例:
kubectl create secret generic mysecret2 --from-file /etc/hosts --from-file /etc/issue
#如以上,键=hosts、值=文件的内容,键=issue、值=文件的内容
b.通过yaml文件创建
通过命令行导出yaml文件模板
kubectl create secret generic [secret名字] --from-literal=[键]=[值] --dry-run=client -o yaml
例1:
kubectl create secret generic mysecret1 --from-literal=x=1
2.删除secret
kubectl delete secret [secret名]
3.查看secret
列出所有secret
kubectl get secrets
查看secret属性
kubectl describe secret [secret名字]
#如上例1创建的mysecret1的属性输出
Name: mysecret1
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
x: 1 bytes
describe中能看到的信息只有“键: 值的大小”(如例1的x: 1bytes)
若想查看值具体是多少(通过base64编码过后的值),则使用:
kubectl get secrets [secret名字] -o yaml
#如例1:
apiVersion: v1
data:
x: MQ==