Secret主要是用来解决密码、token、密钥等敏感数据的配置问题,它有三种类型:

  1. Service Account :用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中;

  2. Opaque : base64编码格式的Secret,用来存储密码、密钥等;

  3. 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注