ConfigMaps 是一种 Kubernetes 资源,可让您将配置数据与应用程序代码分开管理。这种分离使您的应用程序更灵活、更易于管理。
下面的示例展示了如何创建 ConfigMap 并将其用于 pod 定义。
[代码清单]
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
database-url: "mysql://user:password@hostname:3306/dbname"
log-level: "debug"
---
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app-container
image: my-app-image
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: database-url
[执行结果]
pod/my-app-pod created
在本例中,我们首先创建一个名为 my-config 的 ConfigMap,其中包含配置数据,包括数据库 URL 和日志级别。然后,我们定义了一个名为 my-app-pod 的 pod,它使用此 ConfigMap 设置环境变量 DATABASE_URL。valueFrom 字段允许 pod 访问存储在 ConfigMap 中的值。这种方法可以保持应用程序代码的整洁,并允许您在不修改代码的情况下更改配置。
[小知识]
ConfigMap 可以键值对的形式存储数据,数据可以多种方式引用,如环境变量或命令行参数。
您可以更新 ConfigMap,而无需重启使用它的 pod,不过需要对 pod 进行配置,以便动态重新加载配置。
在微服务架构中,ConfigMap 特别适用于将配置与代码分离,从而提高应用程序的可维护性和可扩展性。