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 启动时动态注入配置。
如果将这些配置硬编码在容器镜像中,不仅不灵活,还会带来安全隐患。 ConfigMapSecret 的出现,正是为了解决这一痛点:
  • ConfigMap → 提供统一的非敏感配置存储,支持多环境快速切换;
  • Secret → 提供敏感信息的安全管理,避免将密码、证书硬编码在代码中。

🧠 本章知识卡片

notion image

🚀 本章小节

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 机制,可实现动态热加载;
  • 合理使用能提升系统的 灵活性、安全性与可维护性。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
上一篇
Nginx+ACME服务器搭建
下一篇
第四部分:Gateway 资源介绍

评论
Loading...