type
status
date
slug
summary
category
tags
create_time
Sep 12, 2025 01:16 AM
icon
password
my_create_time
📝 前言
在 Kubernetes 中,应用配置与敏感信息的管理是非常核心的能力。
ConfigMap 用于存储非敏感的配置信息,而 Secret 则专门存储敏感信息(如密码、证书、API Token)。
它们都能以挂载文件或环境变量的方式注入到 Pod 中,从而实现应用与配置的解耦,提升可维护性与安全性。
🧭 背景介绍
在真实的生产环境中,应用往往需要依赖外部服务和环境配置。例如:
- 一个电商系统可能需要 数据库连接信息、Redis 缓存配置;
- 一个微服务架构下的支付服务需要 第三方支付网关的 API Key;
- 一个多环境部署的应用(开发/测试/生产)需要 不同的配置文件;
- 企业内部的 CI/CD 流程需要在 Pod 启动时动态注入配置。
如果将这些配置硬编码在容器镜像中,不仅不灵活,还会带来安全隐患。
ConfigMap
与 Secret
的出现,正是为了解决这一痛点:- ConfigMap → 提供统一的非敏感配置存储,支持多环境快速切换;
- Secret → 提供敏感信息的安全管理,避免将密码、证书硬编码在代码中。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 ConfigMap?
- ConfigMap 是一种 Key-Value 形式的配置存储对象。
- 适用于存储配置信息,例如应用的配置文件、环境变量、命令行参数等。
- 数据 不加密,仅做明文存储,适合非敏感信息。
简单示例如下:
2️⃣ 什么是 Secret?
- Secret 专门用于存储敏感信息(密码、Token、证书等)。
- Kubernetes 默认会对 Secret 进行 Base64 编码 存储,并可结合 KMS 插件进行更安全的加密。
- Secret 默认挂载到 Pod 的 /etc/ 路径下,或通过环境变量注入。
简单示例如下:
3️⃣ 实战示例:在 Pod 中使用
作为环境变量注入:
以 Volume 挂载:
4️⃣ 热加载场景
在一些需要频繁调整配置的场景中(如 Nginx、Prometheus、业务应用配置文件),我们往往希望 不必重启 Pod 就能让应用加载最新配置。
这时,Kubernetes 提供的 ConfigMap / Secret Volume 挂载 就能发挥作用:
- 挂载方式: 将 ConfigMap 或 Secret 以文件形式挂载到容器的指定目录(如 /etc/config/)。
- 更新机制: 当 ConfigMap/Secret 被更新后,Kubernetes 会在后台将挂载的文件同步更新(一般有 秒级延迟)。
- 热加载实现: 如果应用本身支持 reload 信号 或 配置自动检测,即可在无需重启 Pod 的情况下,加载新的配置。
实战示例:Nginx 动态加载配置
在更新 ConfigMap 后,只需执行:
即可让 Nginx 在不重启 Pod 的情况下应用新配置,实现 热加载。
5️⃣ 常用命令
ConfigMap 常用命令:
命令 | 用途 |
kubectl create configmap app-config --from-literal=APP_MODE=dev | 从字面量创建 ConfigMap |
kubectl create configmap app-config --from-file=config.json | 从文件创建 ConfigMap |
kubectl get configmap | 查看所有 ConfigMap |
kubectl describe configmap app-config | 查看 ConfigMap 详情 |
kubectl edit configmap app-config | 编辑 ConfigMap |
Secret 常用命令:
命令 | 用途 |
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=123456 | 从字面量创建 Secret |
kubectl create secret generic db-secret --from-file=ssh-privatekey=id_rsa | 从文件创建 Secret |
kubectl create secret docker-registry regcred --docker-username=user --docker-password=pwd --docker-server=registry.cn-hangzhou.aliyuncs.com | 创建镜像仓库认证 Secret |
kubectl get secret | 查看所有 Secret |
kubectl describe secret db-secret | 查看 Secret 信息(不显示明文) |
✅ 总结
ConfigMap 与 Secret 是 Kubernetes 中配置管理和安全存储的基石:
- ConfigMap 管理非敏感的配置信息,实现应用与环境解耦;
- Secret 管理敏感数据,需结合加密方案保障安全;
- 两者都支持通过 环境变量 或 Volume 挂载 注入 Pod;
- 配合应用的 reload 机制,可实现动态热加载;
- 合理使用能提升系统的 灵活性、安全性与可维护性。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/configmap-secret-resource-introduction
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。