使用 ConfigMaps 和 Secrets 进行配置
将模型配置和凭据外置
使用 ConfigMaps 和 Secrets 进行配置 是 CoddyKit 上的免费 MLOps Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MLOps Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MLOps Academy 课程共包含 4 节课。
不要将配置放入镜像
将模型路径或阈值写入容器后,每次调整都必须重新构建。Kubernetes 允许您改为在运行时注入配置。🔧
ConfigMap 保存普通设置
ConfigMap用于存储非机密的键值对,例如模型名称、批处理大小和日志级别。一个配置对象可以供多个 Pod 读取。
apiVersion: v1
kind: ConfigMap
metadata:
name: model-config
data:
MODEL_NAME: "ranker-v3"
BATCH_SIZE: "32"注入为环境变量
最简单的用法是将 ConfigMap 的键映射到环境变量。这样,您的 Python 代码就可以像在本地一样读取 os.environ。
或将其挂载为文件
您也可以将ConfigMap挂载为卷,把每个键转换为一个文件。这对于模型加载器需要从磁盘读取的完整配置文件很有用。
Secret 用于敏感数据
API 令牌、数据库密码和镜像仓库凭据应放入Secret,绝不能放入 ConfigMap。原理相同,但集群会将其作为机密处理。
Base64 不是加密
Secret 的值以 Base64 编码存储,这只是编码,并不提供安全保护。任何拥有读取权限的人都可以解码,因此请谨慎保护访问权限。
静态加密 Secret
如需真正的保护,请在 etcd 中启用静态加密,或使用 Vault 等外部管理器。仅使用 Base64 永远无法保护您的模型凭据。
安全地使用 Secret
与 ConfigMap 一样,您可以将Secret挂载为环境变量或文件。令牌最好使用文件,因为环境变量可能泄露到日志和崩溃转储中。
envFrom:
- secretRef:
name: model-creds
- configMapRef:
name: model-config一个来源,多个 Pod
更新一次ConfigMap后,所有挂载它的 Pod 都可以获取更改。不过,注入为环境变量的配置需要重启 Pod 才能刷新。
重启以获取环境变量更改
更改作为环境变量使用的值不会自动热加载。请触发 Deployment 的滚动重启,让 Pod 读取新配置。
为每个环境分开配置
为开发环境和生产环境分别保留一个ConfigMap。相同的镜像配合不同的配置,意味着发布模型时无需重新构建容器。
快速检查
模型服务应该从哪里获取数据库密码?
回顾
使用ConfigMap保存普通设置,使用 Secret 保存敏感设置,在运行时注入二者,并重启 Pod 以刷新基于环境变量的值。✅
常见问题解答
「使用 ConfigMaps 和 Secrets 进行配置」课时是免费的吗?
是的 — 「使用 ConfigMaps 和 Secrets 进行配置」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MLOps Academy 课程的其余内容,请升级到 CoddyKit PRO。 MLOps Academy 课程共包含 4 节课。
「使用 ConfigMaps 和 Secrets 进行配置」这节课中我会学到什么?
将模型配置和凭据外置 你通过在浏览器中直接运行的动手代码来练习 MLOps Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 MLOps Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 MLOps Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 ConfigMaps 和 Secrets 进行配置」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 MLOps Academy 课中编写并运行代码吗?
能。每节 MLOps Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 用于模型的 Pod、部署和服务
- 申请 CPU、内存和 GPU
- 使用 ConfigMaps 和 Secrets 进行配置
- 将训练作为 Kubernetes 任务运行