当前位置: 首页 > ds >正文

解释k8s种ConfigMap和Secret的作用,如何在Pod中挂载环境变

一、ConfigMap & Secret 核心定位

属于Kubernetes的配置管理特性,用于解耦应用与配置

1. ConfigMap

作用:存储非敏感配置数据
存储内容

  • 环境变量
  • 命令行参数
  • 配置文件(如JSON/XML/YAML)
  • 系统参数(如JVM参数)
2. Secret

作用:存储敏感信息
存储内容

  • 数据库凭证
  • API密钥
  • TLS证书
  • SSH密钥
对比特性
特性ConfigMapSecret
数据加密明文存储Base64编码
适用场景非敏感配置凭证/密钥
存储限制1MB1MB
自动更新支持(需配置)支持(需配置)

二、Pod挂载方式

1. 环境变量注入
apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: appimage: myapp:v1env:- name: DB_HOSTvalueFrom:configMapKeyRef:name: db-configkey: host- name: DB_PASSWORDvalueFrom:secretKeyRef:name: db-secretkey: password
2. 文件卷挂载
apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: appimage: myapp:v1volumeMounts:- name: config-volumemountPath: /etc/app/config- name: secret-volumemountPath: /etc/app/secretvolumes:- name: config-volumeconfigMap:name: app-config- name: secret-volumesecret:secretName: app-secret

三、最佳实践

  1. 敏感数据必用Secret:即使Base64不是加密,也比明文安全
  2. 热更新策略
    • 环境变量方式:修改后需重建Pod
    • 文件卷方式:kubelet定期同步更新(默认1分钟间隔)
  3. 配置分离:按环境(dev/test/prod)创建不同ConfigMap
  4. 权限控制:通过RBAC限制Secret访问权限

四、创建配置示例

创建ConfigMap:

kubectl create configmap app-config \--from-literal=DB_HOST=mysql-service \--from-literal=CACHE_ENABLED=true

创建Secret:

# 从文件创建
kubectl create secret generic db-credentials \--from-file=./ssl.cert \--from-literal=password='S!B\#d3z'# 专门类型Secret
kubectl create secret tls https-cert \--cert=path/to/cert.crt \--key=path/to/cert.key

上述配置实现了什么功能?开发时如何创建对应的ConfigMap和Secret?

apiVersion: apps/v1
kind: Deployment
spec:template:spec:containers:- name: appenvFrom:        # 环境变量注入方式- configMapRef: # 加载 ConfigMap 所有键值作为环境变量name: app-config- secretRef:    # 加载 Secret 所有键值作为环境变量name: db-credentials
http://www.xdnf.cn/news/10023.html

相关文章:

  • PortSwigger-04-cors
  • 快递物流查询接口如何用C#进行调用?
  • 微机消谐装置:保障PT柜安全的核心设备
  • 第二章支线一:影之殿堂 · 阴影与过渡魔法
  • 下一代数模ai智能体研发意见征集
  • Win11安装Dify
  • 【Linux】(1)—进程概念-③Linux进程概念与PCB
  • 重温经典算法——选择排序
  • 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
  • Node.js 中 require 源码解析
  • 从零起步认知微内核操作系统(AGI)
  • JavaScript 循环语句总结
  • Linux浅谈
  • VMware安装esd格式系统镜像
  • Java实现命令行图书管理系统(附完整源码)
  • 使用 C/C++ 和 OpenCV 调用摄像头
  • Java打包在加载外面的yaml文件
  • 2025LitCTF 复现
  • 【SQL】关键字
  • 【笔记】suna部署之获取 Supabase API key 和 project URL
  • 【笔记】suna部署之获取 Tavily API key
  • 第42节:模型优化与部署:Web服务部署(Flask, FastAPI)
  • Arduino LCD 1602液晶显示器2(I2C总线)
  • ubuntu 22.04 编译安装nignx 报错 openssl 问题
  • 【VMware Workstation 17 Pro许可证密钥】
  • 如何站在指标体系之巅看智能数据建模产品(GAI)
  • 使用k8s服务进行端口代理
  • 3D拟合测量水杯半径
  • C++ 模板参数包展开方式
  • 微服务架构设计规范