Kubernetes---存储--Secret
在k8s中ConfigMap可以去保存配置文件以及一些数据,这些数据可以被导入到Pod内部成为环境变量或者文件,从而可以达到热更新的目的。但这些文件在k8s中是以明文的形式保存的。
密码文件、密钥文件这些类型的文件通过ConfigMap去保存就不是很合适,在k8s,还有一种保存机制,Secret。
⒈存在意义
Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec 中。Secret 可以以Volume或者环境变量的方式使用。
⒉Secret类型
Secret有三种类型:
1,Service Account
用来访问Kubernetes API,由Kubernetes 自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中
2,Opaque
base64编码格式的Secret,用来存储密码、密钥等,注意加密程度并不高。
3,kubernetes.io/dockerconfigjson
用来存储私有docker registry的认证信息
⒊Service Account
Service Account用来访问Kubernetes API,由Kubernetes 自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中,不需要我们手动去管理和创建。
我们可以查看一下
1.新建pod
kubectl run nginx --image nginx
2.查看所有pod
kubectl get pods
3.查看指定pod
kubectl exec nginx-3137573019-md1u2 ls /run/secrets/kubernetes.io/serviceaccount
⒋Opaque Secret
1.创建说明
echo -n "coreqi" | base64
**输出指定字符的base64解密形式
echo -n "MWYyZDF1MmU2N2Rm" | base64 -d
2.secrets.yml
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: MWYyZDF1MmU2N2Rm
username: YWRtaW4=
3.使用方式(两种)
1、将Secret挂载到Volume中,保存成文件
apiVersion: v1 kind: Pod metadata: labels: name: seret-test name: seret-test spec: volumes: - name: secrets secret: secretName: mysecret containers: - image: hub.coreqi.cn/library/myapp:v1 name: db volumeMounts: - name: secrets mountPath: "/etc/secrets" readOnly: true
2、将Secret导出到环境变量中
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: pod-deployment spec: replicas: 2 template: metadata: labels: app: pod-deployment spec: containers: - name: pod-1 image: hub.coreqi.cn/library/myapp:v1 ports: - containerPort: 80 env: - name: TEST_USER valueFrom: secretKeyRef: name: mysecret key: username - name: TEST_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password
⒌kubernetes.io/dockerconfigjson
kuberctl create secret docker-registry myregistrykey --docker-server=hub.coreqi.cn --docker-username=fanqi --docker-password=coreqiadmin--docker-email=10000@qq.com
2.在创建 Pod 的时候,通过 imagePullSecrets 来引用刚创建的`myregistrykey `
apiVersion: v1 kind: Pod metadata: name: foo spec: containers: - name: foo image: roc/coreqi:v1 imagePullSecrets: - name: myregistrykey
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/12809196.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-04-30 .Net Core使用AutoMapper做对象关系映射