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 特别适用于将配置与代码分离,从而提高应用程序的可维护性和可扩展性。