介绍
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:
- 将 ConfigMap 作为卷挂载
- 使用环境变量
注意:你必须先创建 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]
添加所需内容后,使用该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
然后,使用该kubectl create
命令创建具有指定配置设置的 pod。
结论
本文向你展示了Kubernetes创建和使用ConfigMap示例,包括如何创建 ConfigMap 的四种不同方式。此外,它还包括两种将 Kubernetes ConfigMaps 与 Pod 结合使用的方法。