标准答案
- 代码和默认非敏感配置可以进入镜像,环境地址、开关、资源边界和秘密应由部署环境提供。
- 配置注入要有 schema、默认值、类型校验和启动失败策略,避免把缺失配置拖到线上请求才暴露。
- 配置变更要有版本、审计和回滚方式,不能依赖手工进入容器修改文件。
- 验证要确认进程实际读取到的配置,避免环境变量、挂载文件和命令行参数出现优先级冲突。
题目解析
把环境差异放在运行时配置中,可以复用同一个不可变镜像并减少“开发和生产编译结果不同”的风险;但配置仍需要 schema、类型、默认值、优先级和启动失败策略。环境变量、挂载文件、命令行和远程配置中心如果同时存在,必须明确谁覆盖谁。
动态配置还要明确何时生效、是否影响已有请求、如何并发更新和如何回滚。Secret 不应进入镜像;排障时记录配置键、来源和版本,敏感值只记录校验结果或摘要,不能把“最终配置”理解成打印全部内容。
常见误区
- 误区:为每个环境重新编译镜像。改正:保持镜像不可变,把已验证的环境差异放到受控运行时配置。
- 误区:把密码烘焙进镜像。改正:用 Secret 管理和运行时注入,并限制权限和生命周期。
- 误区:没有记录最终生效配置。改正:记录非敏感键、来源、版本和更新时间,保留 Secret 的安全审计。