kubernetes-Secret
Secret
Secret 有三种类型:
Service Account :用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中
Opaque :base64编码格式的Secret,用来存储密码、密钥等
kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息
Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用
从文件创建secret
创建认证文本文件
[root@server2 configmap]# echo -n 'admin' > ./username.txt
[root@server2 configmap]# echo -n 'westos' > ./password.txt
[root@server2 configmap]# kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
secret/db-user-pass created
[root@server2 configmap]# kubectl get secrets
NAME TYPE DATA AGE
db-user-pass Opaque 2 9s
default-token-pbw6h kubernetes.io/service-account-token 3 6d19h
查看认证信息
[root@server2 configmap]# kubectl describe secrets db-user-pass
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password.txt: 6 bytes
username.txt: 5 bytes
[root@server2 configmap]#
为了安全 kubectl get和kubectl describe 默认不会显示密码,可以通过以下方式查看
[root@server2 configmap]# kubectl get secrets db-user-pass -o yaml
apiVersion: v1
data:
password.txt: d2VzdG9z
username.txt: YWRtaW4=
kind: Secret
metadata:
creationTimestamp: "2021-07-31T05:47:20Z"
name: db-user-pass
namespace: default
resourceVersion: "631826"
uid: f467583b-973c-4919-b799-1b9a2b27c618
type: Opaque
查看加密的明文
[root@server2 configmap]# echo d2VzdG9z | base64 -d
westos[root@server2 configmap]#
编写secret