=====================================================================
-
使用方式:
-
以变量的方式;(推荐,用来保存密码)
-
以卷的方式。
-
secret的类型:
-
Opaque:base64编码格式的Secret,用来存储密码、密钥等;但数据也通过base64 –decode解码得到原始数据,所有加密性很弱。(本节重点)
-
kubernetes.io/dockerconfigjson
:用来存储私有docker registry的认证信息,在yaml文件中可以使用imagePullSecrets来引用。 -
kubernetes.io/service-account-token
: 用于被serviceaccount引用。serviceaccout创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod目录/run/secrets/ kubernetes.io/serviceaccount中。
查看secret
命令:kubectl get secrets
[root@master ~]# kubectl get secrets
NAME TYPE DATA AGE
default-token-cj6f5 kubernetes.io/service-account-token 3 5d19h
[root@master ~]#
查看secret定义参数
kubectl describe secrets secrets_name
[root@master sec]# kubectl describe secrets mysecret1
Name: mysecret1
Namespace: sec
Labels:
Annotations:
Type: Opaque
Data
====
password1: 7 bytes
password2: 7 bytes
[root@master sec]#
解析secret定义密码
- 需要先 以yaml文件输出创建内容
语法:kubectl get secrets secret_name -o yaml1
[root@master sec]# kubectl get secrets mysecret1 -o yaml
apiVersion: v1
data:
下面就是定义的值密码了【其实我们设置的是redhat1和redhat2,在文件中就显示为被加密过的值了
password1: cmVkaGF0MQ==
password2: cmVkaGF0Mg==
kind: Secret
metadata:
creationTimestamp: “2021-08-30T03:13:56Z”
name: mysecret1
namespace: sec
resourceVersion: “7298993”
selfLink: /api/v1/namespaces/sec/secrets/mysecret1
uid: cd04d95a-b10d-4c7a-97ec-ff89f4df0598
type: Opaque
[root@master sec]#
- 其中存储的信息被base64编码过,可以解码检查一下是不是保存的密码redhat1【data下面的值】:
语法:echo data值 | base64 -d
[root@master sec]# echo cmVkaGF0MQ== | base64 -d
redhat1[root@master sec]#
[root@master sec]#
[root@master sec]# echo cmVkaGF0Mq== | base64 -d
redhat2[root@master sec]#
[root@master sec]#
- 以json格式验证密码【这个复杂了,用上面方法验证省事得多】
[root@master sec]# kubectl get secrets mysecret1 -o jsonpath={.data.password1} | base64 -d
redhat1[root@master sec]#
[root@master sec]# kubectl get secrets mysecret1 -o jsonpath={.data.password2} | base64 -d
redhat2[root@master sec]#
删除secret
语法:kubectl delete secrets secret_name
[root@master sec]# kubectl get secrets
NAME TYPE DATA AGE
default-token-cj6f5 kubernetes.io/service-account-token 3 5d20h
mysecret1 Opaque 2 45m
mysecret2 Opaque 1 30m
mysecret3 Opaque 1 23m
mysecret4 Opaque 3 23m
mysecret5 Opaque 1 16m
mysecret6 Opaque 3 15m
[root@master sec]#
[root@master sec]# kubectl delete secrets mysecret5
secret “mysecret5” deleted
[root@master sec]# kubectl delete secrets mysecret4
secret “mysecret4” deleted
[root@master sec]# kubectl delete secrets mysecret3
secret “mysecret3” deleted
[root@master sec]#
[root@master sec]# kubectl get secrets
NAME TYPE DATA AGE
default-token-cj6f5 kubernetes.io/service-account-token 3 5d20h
mysecret1 Opaque 2 45m
mysecret2 Opaque 1 30m
mysecret6 Opaque 3 15m
[root@master sec]#
-
secret以键值对的方式存在。
-
语法:
方式1【建议使用此方法】
kubectl create secret generic mysecret1 --from-literal=user=tom --from-literal=键1=值1 --from-literal=键2=值2
方式2【了解为主】
语法secret的键为去掉路径的文件名hosts,值为文件的内容。
系统文件格式
kubectl create secret generic mysecret1 --from-file=/etc/ho