https://kubernetes.io/docs/concepts/configuration/secret/

 

Secret是一个包含少量敏感数据的对象,例如密码,令牌或密钥。 否则,这些信息可能被放入Pod规格或图像中; 将其放置在Secret对象中可以更好地控制它的使用方式,并降低意外暴露的风险。

用户可以创建Secret,系统也会创建一些Secret。要使用Secret,pod需要引用Secret。 Secret可以通过两种方式与pod一起使用:作为安装在一个或多个容器上的volume中的文件,或者在为pod pull image时由kubelet使用。

 

Kubernetes会自动创建包含访问API凭据的secret,并自动修改您的Pod以使用此类secret

如果需要,可以禁用或覆盖API自动创建和使用的凭据。 但是,如果您只需安全访问apiserver,那么这就是推荐的工作流程

 

Creating your own Secrets

[root@mhc secret_dir]# echo -n "admin" > ./username.txt
[root@mhc secret_dir]# echo -n "1f2d1e2e67df" > ./password.txt
[root@mhc secret_dir]#
[root@mhc secret_dir]# ls
password.txt  username.txt
[root@mhc secret_dir]# kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
secret "db-user-pass" created
[root@mhc secret_dir]#
[root@mhc secret_dir]# kubectl describe secret db-user-pass
Name:         db-user-pass
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password.txt:  12 bytes
username.txt:  5 bytes

===================================================

Creating a Secret Manually

You can also create a secret object in a file first, in json or yaml format, and then create that object.

Each item must be base64 encoded:

$ echo -n "admin" | base64
YWRtaW4=
$ echo -n "1f2d1e2e67df" | base64
MWYyZDFlMmU2N2Rm

Now write a secret object that looks like this:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

$ kubectl create -f ./secret.yaml
secret "mysecret" created

===============================================
$ echo "MWYyZDFlMmU2N2Rm" | base64 --decode
1f2d1e2e67df