目录
一.Secret
1.Secret概念
Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或
者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。
2.Secret 的类型:
1)kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount 目录中;
2)Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
3)kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。
4)kubernetes.io/tls :用来存储 TLS 证书和私钥信息。
Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
- 作为挂载到一个或多个容器上的卷 中的文件。
- 作为容器的环境变量。
- 由 kubelet 在为 Pod 拉取镜像时使用
3.Opaque的创建、使用
kubectl create -n xy101 secret generic liliang-cecret --from-file=./username.txt --from-file=./password.txt
kubectl create secret -n xy101 generic li-secret --from-file=demo/
kubectl create -n xy101 secret generic scj-secret --from-literal=myname=scj --from-literal=myclass=xy101
1)挂载方式引用Opaque
将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下
vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: demo1-pod
name: demo1-pod
namespace: xy101
spec:
volum