Kubernetes 使用 ConfigMap 管理配置文件

阅读时长 5 分钟读完

在 Kubernetes 环境中,我们通常会将应用程序通过容器的方式进行部署和运行。而应用程序依赖的配置文件往往需要单独管理。Kubernetes 通过 ConfigMap 提供了一种方便的方式来管理应用程序的配置信息,可在容器中使用数据卷挂载或环境变量注入的方式来使用。

ConfigMap 简介

ConfigMap 是一种用于存储非机密数据的 Kubernetes 资源对象。它可以用于存储配置文件、命令行参数、环境变量等任何文本格式的数据。ConfigMap 与 Pod、Service 等 Kubernetes 对象一样,都属于命名空间中的资源,可以通过 API Server 进行操作。

创建 ConfigMap

在 Kubernetes 中,我们可以使用 kubectl 命令行工具来创建 ConfigMap,如下所示:

其中,name 参数是 ConfigMap 的名称,data 参数是要添加到 ConfigMap 中的数据。数据可以是一个目录,也可以是一个文件,还可以是一串文本格式的数据。

例如,我们可以创建一个名为 my-config 的 ConfigMap,并将一个名为 env.conf 的配置文件添加到其中,命令如下:

如果要添加多个配置文件,则可以使用 --from-file 选项多次进行添加。例如,如下命令即可添加三个文件到 ConfigMap 中:

除了通过文件添加数据之外,我们还可以使用 --from-literal 选项来添加文本格式的数据,例如:

使用 ConfigMap

创建了 ConfigMap 后,我们就可以在 Pod 中使用它了。有两种方式可以使用 ConfigMap,一种是将 ConfigMap 数据挂载到容器的本地文件系统中,另一种是将 ConfigMap 数据注入到容器的环境变量中。

挂载 ConfigMap 带到容器中

要将 ConfigMap 数据挂载到容器中,只需要在 Pod 的配置文件中添加如下部分:

-- -------------------- ---- -------
--------
  - ----- -------------
    ----------
      ----- ---------
-----------
  - ----- ---
    -------------
      - ----- -------------
        ---------- -----------

其中,volumes 部分配置了 Pod 中要使用的卷,configMap 类型的卷与 hostPathemptyDirpersistentVolumeClaim 等类型的卷类似,都是 Kubernetes 中常用的卷类型。name 属性定义了卷的名称,configMap 属性用来指定该卷的类型,并通过 name 属性指定了要使用的 ConfigMap 名称。

containers 部分配置了 Pod 中要运行的容器。在这里,我们通过 volumeMounts 选项将 config-volume 这个卷挂载到了容器中,并设置了挂载的路径。在容器中,我们就可以通过 /app/config 路径访问到 ConfigMap 中的数据了。

将 ConfigMap 注入到容器的环境变量中

另一种使用 ConfigMap 的方式是将配置信息注入到容器的环境变量中。对于一些只需要读取配置信息的应用程序,这种方式更加便捷。

要将 ConfigMap 数据注入到容器的环境变量中,只需要在容器的配置文件中添加如下部分:

在这里,我们使用 envFrom 选项来将 ConfigMap 中的数据注入到容器的环境变量中。configMapRef 类型用来指定要注入的 ConfigMap,通过 name 属性指定要使用的 ConfigMap 名称。

示例代码

以下是一个使用 ConfigMap 的示例 Pod 配置文件。该文件使用 envFrom 选项将 ConfigMap 数据注入到容器的环境变量中,同时也将 ConfigMap 数据挂载到容器的文件系统中供应用程序读取。你需要替换 my-config 部分为你自己的 ConfigMap 名称,并根据实际需求修改其它配置信息:

-- -------------------- ---- -------
----------- --
----- ---
---------
  ----- ------
-----
  -----------
  - ----- ------------
    ------ ------------
    --------
      - -------------
          ----- ---------
    ------
    - -------------- --
    -------------
    - ----- -------------
      ---------- -----------
  --------
  - ----- -------------
    ----------
      ----- ---------

总结

Kubernetes 的 ConfigMap 可以很方便地管理应用程序的配置信息,使我们不用在容器镜像中嵌入配置文件。在使用 Kubernetes 部署应用程序时,尽可能使用 ConfigMap 来管理应用程序所需的配置信息,可以提高应用程序的可维护性和扩展性,减少由于配置信息不同步而产生的问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a79dbd48841e989441bacd

纠错
反馈