无需登录 数据私有 本地保存

ConfigMap 生成器 - 从键值对快速生成 Kubernetes 资源

11
0
0
0

ConfigMap 生成器

从键值对快速生成 Kubernetes ConfigMap YAML,支持 .env 导入与批量编辑

0 个条目
Key(键) Value(值) 操作

每行一个键值对,格式:KEY=value,支持 # 注释和空行

YAML 预览
# 在左侧添加键值对,这里将实时显示生成的 YAML

常见问题与知识点

ConfigMap 是 Kubernetes 中用于存储非敏感配置数据的 API 对象。它将配置信息(如环境变量、配置文件、命令行参数等)与容器镜像解耦,使得应用配置可以独立管理和更新。ConfigMap 以键值对的形式存储数据,可以通过环境变量、命令行参数或挂载卷的方式注入到 Pod 中。一个 ConfigMap 的总大小不能超过 1MB(受 etcd 存储限制)。

主要区别在于:ConfigMap 存储非敏感数据(明文),而 Secret 存储敏感数据(如密码、令牌、密钥等)。Secret 的数据在传输和存储时会被 base64 编码,并支持加密存储(如使用 etcd 加密)。此外,Kubernetes 对 Secret 有额外的保护机制,如仅在需要时才将 Secret 发送到节点,且 Secret 存储在 tmpfs 中而非磁盘。如果你需要存储密码或 API 密钥,请使用 Secret 而非 ConfigMap。

步骤很简单:
1. 填写 ConfigMap 名称命名空间
2. 在键值对表格中输入配置项的 Key 和 Value。
3. 右侧实时预览生成的 YAML。
4. 点击复制按钮复制到剪贴板,或点击下载保存为 .yaml 文件。
5. 使用 kubectl apply -f configmap.yaml 部署到集群。
也支持从 .env 文件导入或批量粘贴键值对。

单个 ConfigMap 对象的大小不能超过 1MB(1,048,576 字节)。这是由 Kubernetes 底层存储 etcd 的限制决定的。如果你的配置数据很大,建议将其拆分为多个 ConfigMap,或者考虑使用其他存储方案(如挂载外部存储卷)。另外,ConfigMap 中单个 key 的 value 虽然没有硬性限制,但过大的 value 会影响性能。

Immutable ConfigMap(不可变配置映射)是 Kubernetes 1.21 引入的稳定特性。将 immutable: true 设置为 ConfigMap 后,其内容将无法被更新。这样做的好处包括:保护关键配置不被意外修改;提高集群性能(kubelet 不再需要轮询 ConfigMap 变更);确保配置的版本一致性。如果需要修改,必须创建新的 ConfigMap 并更新 Pod 引用。适用于生产环境中需要严格版本控制的配置。

有两种方式:
方式一(本工具):点击"导入 .env"按钮上传 .env 文件,工具会自动解析并填充键值对表格,然后生成 ConfigMap YAML。
方式二(kubectl 命令行):使用 kubectl create configmap my-config --from-env-file=.env 直接从 .env 文件创建 ConfigMap,每个环境变量成为一个 data 条目。
.env 文件格式为 KEY=value,支持注释行(# 开头)。

不会自动更新。当 ConfigMap 更新后:
• 作为环境变量注入的配置不会更新,需要重启 Pod。
• 作为挂载卷挂载的配置会在 kubelet 同步周期内自动更新(默认约 60-90 秒),但应用是否重新加载取决于应用自身的配置热加载能力。
• 使用 subPath 挂载的文件不会自动更新。
如果需要触发 Pod 滚动更新,可以使用 kubectl rollout restart deployment 或使用工具如 Reloader。

ConfigMap 的 data key 必须符合以下规则:
• 只能包含字母(a-z, A-Z)、数字(0-9)、连字符(-)、下划线(_)和点(.)。
• 不能以连字符开头。
• 在使用 --from-file 方式创建时,key 默认为文件名,不符合规范的文件名会被自动转换。
• 建议使用大写下划线风格(如 DATABASE_HOST)用于环境变量场景,使用点分隔风格(如 database.host)用于配置文件场景。

在 Pod 定义中将 ConfigMap 挂载为卷:
volumes:
  - name: config-volume
    configMap:
      name: my-app-config
然后在容器中挂载:
volumeMounts:
  - name: config-volume
    mountPath: /etc/config
ConfigMap 中的每个 key 会成为挂载目录下的一个文件,文件内容为对应的 value。这种方式非常适合挂载配置文件(如 nginx.conf、application.properties 等)。

常用命令:
kubectl create configmap my-config --from-literal=key1=val1 --from-literal=key2=val2 — 从命令行键值对创建。
kubectl create configmap my-config --from-file=config.properties — 从文件创建。
kubectl create configmap my-config --from-env-file=.env — 从 .env 文件创建。
kubectl get configmap my-config -o yaml — 查看 ConfigMap 的 YAML 输出。
kubectl edit configmap my-config — 直接编辑 ConfigMap。