标准答案

  1. 非敏感配置可通过环境变量或 volume 注入,Secret 适合密码、令牌和证书等敏感输入。
  2. Secret 的 base64 编码不是加密,集群还需要配置静态加密、RBAC、审计和密钥轮换。
  3. 环境变量通常只在进程启动时读取,volume 更新和应用热加载也要看实现与挂载方式。
  4. 配置变更要有版本、回滚和重启/热加载策略,避免手工修改线上对象造成不可追溯状态。

题目解析

ConfigMap 和 Secret 都是把配置交给工作负载的 API 对象,区别在于敏感性和相应的访问治理;Secret 的 base64 只是传输表示,不是加密。是否安全还取决于 API Server 静态加密、RBAC、etcd 访问、节点权限、挂载方式、日志和进程转储。

环境变量通常只在进程启动时读取,volume 更新能否被应用看到取决于 kubelet 更新方式和应用是否重新加载;很多程序不会自动重新读取。配置变更应有版本、审计、滚动或热加载策略,并验证新旧配置在发布和回滚期间都兼容。

常见误区

  • 误区:把 base64 当加密。改正:配置静态加密、RBAC、审计和轮换,并限制 Secret 的读取范围。
  • 误区:把 Secret 内容打印到日志。改正:只记录引用、版本或校验结果,禁止输出值。
  • 误区:更新 ConfigMap 后假设所有应用立即生效。改正:确认注入方式和应用 reload 机制,必要时滚动重启并验证。

作者信息