kubernetes Secret使用说明
Secret主要是用来解决密码、token、密钥等敏感数据的配置问题,它有三种类型:
-
Service Account :用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中;
-
Opaque : base64编码格式的Secret,用来存储密码、密钥等;
-
kubernetes.io/dockerconfigjson :用来存储私有docker registry的认证信息。
下面我们主要说的是第二种
创建Secret
我们可以通过kubectl create secret来通过一个文件创建一个secret,如下:
[root@master test]# echo 'rootpassword' > password.txt
[root@master test]# cat password.txt | base64
cm9vdHBhc3N3b3JkCg==
[root@master test]# kubectl create secret generic root-password –from-file=password.txt
secret "root-password" created
通过yaml文件创建secret(所有的secret的data都要以base64进行编码)
apiVersion: v1
kind: Secret
metadata:
name: root-password
type: Opaque
data:
password: cm9vdHBhc3N3b3JkCg==
使用Secret
我们可以通过get和describe来获取Secret,不过我们发现,kubectl并没有向我们返回Secret具体的内容:
[root@master test]# kubectl get secret
NAME TYPE DATA AGE
default-token-drh57 kubernetes.io/service-account-token 3 94d
root-password Opaque 1 6m
root-password1 Opaque 1 6s
[root@master test]# kubectl describe secret root-password1
Name: root-password1
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 13 bytes