如何在Kubernetes中创建和使用ConfigMap?分步指南

2021年11月20日18:06:54 发表评论 850 次浏览

介绍

Kubernetes如何创建和使用ConfigMap?ConfigMaps 是一个有用的 Kubernetes 特性,它允许你通过分离配置设置来维护轻量级的可移植图像。

使用小的分层镜像是构建高效 Kubernetes 集群的实践之一。使用 ConfigMaps 可以帮助你实现这一目标。

在本教程中,你将学习如何创建和使用 ConfigMap,包括Kubernetes创建和使用ConfigMap示例。

先决条件

  • 使用sudo 或 root 权限访问用户帐户
  • 访问命令行/终端窗口(Ctrl – Alt – T
  • Kubernetes 平台已安装

什么是 ConfigMap,它的用途是什么?

ConfigMap 是将配置数据存储在键值对中的 API。它们的主要功能是将配置与容器映像分开。它可以代表整个配置文件或单个属性。

如果你正在使用 Kubernetes,你希望保持图像轻便和便携。为此,你应该将配置设置与应用程序代码分开。使用 ConfigMaps,你可以在 pod 上添加不同的配置数据以适应它们运行的​​环境。

例如,你可以在开发、测试或生产阶段使用具有不同配置的相同代码。

注意:请注意 ConfigMap 未加密,不应用于敏感信息。要存储和管理敏感信息,请使用Kubernetes Secrets。

如何创建一个 ConfigMap?

你可以从文件、目录和文字值创建 ConfigMap。

Kubernetes如何创建和使用ConfigMap?创建 ConfigMap 的基本语法是:

kubectl create configmap [configmap_name] [attribute] [source]

根据来源,属性将是:

  • --from file (如果源是文件/目录)
  • --from-literal (如果源是键值对)

选项 1:使用 YAML 文件创建 ConfigMap

使用包含键值对格式所需配置的 .yaml 文件来创建 ConfigMap:

kubectl create configmap [configmap_name] --from-file [path/to/yaml/file]

例如,要从example-configmap.yaml文件中创建名为example-configmap的 ConfigMap ,你可以运行:

kubectl create example-configmap --from-file /api/v1/namespace/default/configmaps/example-configmap.yaml

选项 2:从文件创建 ConfigMap

Kubernetes创建和使用ConfigMap示例:Kubernetes 允许从一个或多个任何纯文本格式的文件(只要文件包含键值对)创建 ConfigMap。

要从文件创建 ConfigMap,请使用以下命令:

kubectl create configmap [configmap_name] --from-file [path/to/file]

要从多个文件创建 ConfigMap,请运行:

kubectl create configmap [configmap_name] --from-file [path/to/file1] --from-file [path/to/file2] --from-file [path/to/file3]

选项 3:从目录创建 ConfigMap

你还可以从目录(即目录中的所有文件)创建 ConfigMap。为此,请使用以下命令:

kubectl create configmap [configmap_name] --from-file [path/to/directory]

Kubectl 将目录中的每个文件打包到新的 ConfigMap 中。仅包含具有有效密钥的基本名称的文件。ConfigMap 中不包含子目录和非常规文件。

选项 4:从文字值创建 ConfigMap

你还可以使用该--from-literal选项从文字值创建 ConfigMap 。

为此,请遵循基本语法:

kubectl create configmap [configmap_name] --from-literal [key1]=[value1] --from-literal [key2]=[value]2

查看 ConfigMap 中的键值对

要查看 Kubernetes ConfigMap 的详细信息和键的值,请使用以下命令:

kubectl get configmaps [configmap_name] -o yaml

输出应以 yaml 格式显示信息:

apiVersion: v1
data: 
  key1: value1
  key2: value2
  ...
kind: ConfigMap
metadata:
  creationTimeStamp: ...
  name: example-configmap
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespace/default/configmaps/example-configmap
  uid: ...

配置 Pod 以使用 ConfigMap

Kubernetes如何创建和使用ConfigMap?有两种方法可以配置 pod 以使用特定的 ConfigMap:

  1. 将 ConfigMap 作为卷挂载
  2. 使用环境变量

注意:你必须先创建 ConfigMap,然后才能将其引用到所需的 pod。

Kubernetes创建和使用ConfigMap示例:将 ConfigMap 挂载为卷

下载或创建 ConfigMap 后,你可以使用卷将配置挂载到 pod。

在 pod 的 yaml 文件中添加一个卷部分:

volumes:
  - name: config
  configMap
    name: [configmap_name]
    items:
    - key: [key/file_name]
    path: [inside_the_pod]
如何在Kubernetes中创建和使用ConfigMap?分步指南

添加所需内容后,使用该kubectl create命令创建以 ConfigMap 作为卷的 pod。

将 ConfigMap 与 EnvFrom 一起使用

Kubernetes如何创建和使用ConfigMap?ConfigMaps 允许你通过环境变量引入多个值。

env部分添加到 pod 的 yaml 文件以从 ConfigMap 中提取指定的环境变量:

env: 
        - name: SPECIAL_LEVEL_KEY
          valueFrom:
            configMapKeyRef:
              name: [configmap_name] 
              key: [key/file_name]

要从 ConfigMap 中提取所有环境变量,请将envFrom部分添加到 yaml 文件:

envFrom:
  - configMapKeyRef
      name: env-config
如何在Kubernetes中创建和使用ConfigMap?分步指南

然后,使用该kubectl create命令创建具有指定配置设置的 pod。

结论

本文向你展示了Kubernetes创建和使用ConfigMap示例,包括如何创建 ConfigMap 的四种不同方式。此外,它还包括两种将 Kubernetes ConfigMaps 与 Pod 结合使用的方法。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: