文章目录
配置资源管理
Secret 是一种用于存储敏感信息(如密码、令牌、密钥等)的资源对象。与直接将敏感信息存储在 Pod 或镜像中相比,使用 Secret 可以更好地控制数据的访问权限,减少数据暴露的风险。
Secret 的四种类型
- kubernetes.io/service-account-token:
- 由 Kubernetes 自动创建,用于访问 APIServer。
- Pod 默认使用这个 Secret 与 APIServer 通信。
- 自动挂载到 Pod 的
/var/run/secrets/kubernetes.io/serviceaccount
目录中。
- Opaque:
- 默认的 Secret 类型,使用 base64 编码存储用户自定义的敏感数据(如密码、密钥等)。
- kubernetes.io/dockerconfigjson:
- 用于存储私有 Docker Registry 的认证信息。
- kubernetes.io/tls:
- 用于存储 TLS 证书和私钥信息。
创建 Secret 的两种方式
1. 使用 kubectl create secret
命令创建
echo -n 'zhangsan' > username.txt
echo -n 'abc1234' > password.txt
kubectl create secret generic mysecret --from-file=username.txt --from-file=password.txt
查看 Secret:
kubectl get secrets
kubectl describe secret mysecret
2. 使用 base64 编码内容创建
echo -n zhangsan | base64
echo -n abc1234 | base64
创建 secret.yaml
文件:
apiVersion: v1
kind: Secret
metadata:
name: mysecret1
type: Opaque
data:
username: emhhbmdzYW4K=
password: YWJjMTIzNAo==
应用 YAML 文件:
kubectl create -f secret.yaml
查看 Secret 的详细信息:
kubectl get secret mysecret1 -o yaml
使用 Secret 的两种方式
1. 将 Secret 挂载到 Volume 中
创建 secret-test.yaml
文件:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name