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