第10章. ConfigMaps 与Secrets
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Kubernetes 专门提供了两种用于定义配置数据的原语 :ConfigMap和Secret。这两种原语 完全脱离了 Pod 的生命周期,这使得您能够在无需重新部署 Pod 的情况下修改其配置数据值。
本质上,ConfigMap 和 Secrets 存储一组键值对。这些键值对可作为环境变量注入容器,也可挂载为卷。图 10-1展示了这些选项。
图10-1. 配置数据的消费流程
ConfigMap与Secret在表面用途和结构上看似几乎相同,但存在细微却重要的差异:ConfigMap存储明文数据(如连接URL、运行时标志,甚至JSON/YAML等结构化数据);而Secrets更适合存储密码、API密钥或SSL证书等敏感数据,并以Base64编码形式保存。
ConfigMap与Secret数据的加密机制
存储ConfigMap和Secret对象数据的集群组件是etcd,其默认以未加密形式管理数据。可参照Kubernetes文档配置etcd数据加密 。etcd加密功能不在考试范围之内。
本章频繁提及卷的概念。请参阅第15章以回顾在Pod中使用卷的具体机制。
ConfigMap操作
应用程序常通过配置数据控制运行时行为。典型配置数据包括连接URL及网络通信选项(如重试次数或超时时间),这些参数在不同目标部署环境中可能存在差异。
同一组配置数据需供多个Pod访问的情况并不少见 。与其在多个Pod定义中重复粘贴相同的键值对,不如选择将信息集中存储于ConfigMap对象中。该对象可承载配置数据,并供任意数量的Pod使用。因此,当需要修改数据时,仅需在单一位置进行变更。
创建ConfigMap
可通过执行命令创建ConfigMap 。该命令需提供数据源选项,Kubernetes支持表10-1所示的四种不同选项。
| 选项 | 示例 | 描述 |
|---|---|---|
|
|
字面值,即明文形式的键值对 |
|
|
包含键值对且期望其作为环境变量的文件 |
|
|
包含任意内容的文件 |
|
|
包含一个或多个文件的目录 |
--from-env-file与--from-file 选项易混淆。选项
--from-env-file 要求文件以KEY=value格式存储环境变量,各条目以换行分隔。键值对遵循标准环境变量命名规范(如键名首字母大写,单词间用下划线分隔)。该选项传统上用于处理Docker Compose的.env文件,但也可处理任何包含环境变量的文件。
--from-env-file选项不会强制执行或规范化环境变量的典型命名规则。--from-file ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access