第 10 章 配置和保密
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
如果你想保守秘密,也必须瞒着自己。
乔治-奥威尔《1984
将 Kubernetes 应用程序的逻辑与其配置(即在应用程序生命周期中可能发生变化的任何值或设置)分开是非常有用的。配置值通常包括环境特定设置、第三方服务的 DNS 地址和身份验证凭据等。
虽然您可以直接将这些值写入代码,但这种方法并不灵活。首先,更改配置值需要对应用程序进行彻底的重建和重新部署。将这些值从代码中分离出来,然后从文件或环境变量中读入,效果会好得多。
Kubernetes 提供了几种不同的方法来帮助你管理配置。一种是通过 Pod 规范中的环境变量向应用程序传递值(参见"环境变量")。另一种是直接在 Kubernetes 中使用 ConfigMap 和 Secret 对象存储配置数据。
在本章中,我们将详细探讨配置映射和秘密,并以演示应用程序为例,介绍在应用程序中管理配置和秘密的一些实用技术。
配置地图
ConfigMap 是 Kubernetes 中存储配置数据的主要对象。你可以把它想象成存储配置数据的键值对命名集。一旦有了 ConfigMap,你就可以通过在 Pod 中创建文件或将其注入 Pod 环境的方式,将数据提供给应用程序。
在本节中,我们将了解一些将数据导入 ConfigMap 的不同方法,然后探索提取这些数据并将其导入 Kubernetes 应用程序的各种途径。
创建配置地图
假设你想在 Pod 的文件系统中创建一个 YAML 配置文件,文件名为config.yaml,内容如下:
autoSaveInterval:60batchSize:128protocols:-http-https
有了这组值,如何将它们转化为可以应用到 Kubernetes 的 ConfigMap 资源呢?
一种方法是在 ConfigMap 清单中将数据指定为字面 YAML 值。这就是 ConfigMap 对象的清单:
apiVersion:v1kind:ConfigMapmetadata:name:demo-configdata:config.yaml:|autoSaveInterval: 60batchSize: 128protocols:- http- https
您可以创建一个 ConfigMap,方法是从头开始编写清单,然后将config.yaml中的值添加到data 部分,就像我们在本例中所做的那样。
不过,更简单的方法是让kubectl 代劳。您可以直接从 YAML 文件创建 ConfigMap,方法如下:
kubectl create configmap demo-config --from-file=config.yamlconfigmap "demo-config" created
要导出与此 ConfigMap 对应的清单文件,请运行
kubectl get configmap/demo-config -o yaml>demo-config.yaml
这会将集群 ConfigMap 资源的 YAML 清单表示写入文件demo-config.yml,但其中会包含额外信息,如status 部分,您可能需要在再次应用前将其删除(请参阅"导出资源")。
从配置映射设置环境变量
现在我们已经在 ConfigMap 对象中获得了所需的配置数据,那么如何将这些数据导入容器中呢?让我们看看使用演示应用程序的完整示例。您可以在演示软件仓库的 ...
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