如何自己建网站企业网站,网络运维工程师需要具备什么证书,帝国音乐网站怎么做数据表,网络营销推广实例Secret Secret的介绍Secret的使用通过环境变量引入Secret通过volume挂载Secret Secret的介绍
Secret是一种保护敏感数据的资源对象。例如#xff1a;密码、token、秘钥等#xff0c;而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使… Secret Secret的介绍Secret的使用通过环境变量引入Secret通过volume挂载Secret Secret的介绍
Secret是一种保护敏感数据的资源对象。例如密码、token、秘钥等而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。
Pod 可以用两种方式使用 secret作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里或者当 kubelet 为 pod 拉取镜像时使用。
secret可选参数有三种:
generic: 通用类型通常用于存储密码数据。tls此类型仅用于存储私钥和证书。docker-registry: 若要保存docker仓库的认证信息的话就必须使用此种类型来创建。
Secret类型 Service Account用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount对应的 secret 会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中。 Opaquebase64编码格式的Secret用来存储密码、秘钥等。可以通过base64 --decode解码获得原始数据因此安全性弱 kubernetes.io/dockerconfigjson用来存储私有docker registry的认证信息。
Secret的使用
通过环境变量引入Secret
1、把mysql的root用户的password创建成secret
kubectl create secret generic mysql-password --from-literalpasswordadmin**lucky66kubectl get secretkubectl describe secret mysql-passwordpassword的值是加密的但secret的加密是一种伪加密它仅仅是将数据做了base64的编码
2、创建pod引用secret
vim pod-secret.yaml apiVersion: v1
kind: Pod
metadata:name: pod-secretlabels:app: myapp
spec:containers:- name: myappimage: myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80env:- name: MYSQL_ROOT_PASSWORD #Pod启动成功后,Pod中容器的环境变量名.valueFrom:secretKeyRef:name: mysql-password # secret的对象名key: password # secret中的key名更新资源清单文件
kubectl apply -f pod-secret.yamlkubectl exec -it pod-secret -- /bin/shprintenv通过volume挂载Secret
1、创建Secret并手动加密基于base64加密
echo -n admin | base64YWRtaW4
echo -n admin123456 | base64YWRtaW4xMjM0NTY
解码
echo YWRtaW4xMjM0NTY | base64 -d2、创建yaml文件
vim secret.yamlapiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4password: YWRtaW4xMjM0NTY更新资源清单文件
kubectl apply -f secret.yamlkubectl describe secret mysecret3、将Secret挂载到Volume中
vim pod_secret_volume.yamlapiVersion: v1
kind: Pod
metadata:name: pod-secret-volume
spec:containers:- name: myappimage: myapp:v1volumeMounts:- name: secret-volumemountPath: /etc/secretreadOnly: truevolumes:- name: secret-volumesecret:secretName: mysecret更新资源清单文件
kubectl apply -f pod_secret_volume.yamlkubectl exec -it pod-secret-volume -- /bin/shls /etc/secretcat /etc/secret/usernamecat /etc/secret/password由上可见在pod中的secret信息实际已经被解密