Kubernetes

创建 ConfigMap配置值始终保留为字符串

先选择输入的含义,再生成 ConfigMap、Opaque Secret、ENV 或字符串键值 JSON。

创建 ConfigMap

输入

结果

内容仅在当前浏览器页面内存中处理,不通过网络请求或分享链接发送。

遮罩只覆盖结果,输入原文仍可见。关闭遮罩后才能复制或下载真实值。

YAML 仅提取配置值,元数据按当前选项重建。Base64 是编码,不是加密。

输入及数据各 256 KiB · 最多 1000 个键 · 输出 1 MiB · 仅限 UTF-8 文本

输入文本后开始

创建 ConfigMap 时,最容易混淆的是“多个环境变量”和“一个配置文件”。PORT=0080 可以是一条独立设置,也可能只是 application.properties 文件中的一行;这两种情况需要不同的键值结构。

ENV 转 ConfigMap 适合 dotenv 赋值。已有清单则选择 YAML 输入,通过 Secret Base64 解码取回文本;stringData 与 data 同时存在时,遵循 Kubernetes 的覆盖规则,并报告覆盖数量。

为什么在这里创建 ConfigMap

同一组值,明确选择三种表示

创建 ConfigMap 的过程保留原始字符串,也可以把同一组值输出为 Secret 的 Base64 data 或明文 stringData。结果默认全部遮罩,显示后才开放完整复制与下载。遮罩只是结果预览,输入框中的原文仍然可见。

同一组配置值分别生成普通 data、编码后的 data 和明文 stringData。

整份文件不会被意外拆开

配置文件中的等号、空行和末尾换行可能都是应用需要的内容。整文件模式把原文放在一个自选文件键下;ENV 模式则按赋值生成多个键。两种模式的条目数不同,能帮助确认是否选对了含义。

ENV 文件按行分成多个键,整份配置文件则保留在一个文件键下。

先辨别数据含义,再检查导出条件

01

本地文件也按所选模式解析

文件名不会自动决定解析方式。读取挂载用配置文件前先选“整文件作为一个值”;只有每条赋值代表一项设置时才选 ENV。读取文件、载入示例和清空都会先显示替换预览,应用后可撤销一次。

02

对象名称来自选项,不继承原清单

生成的 name 与 namespace 取自当前输入项;namespace 留空就省略。application.properties 是合法文件键,但不是本工具支持的可移植 ENV 名称。需要保留这种键时选择 YAML 或 JSON 输出。

03

确认结果没有过期,再显示值

输入或转换参数一变,复制和下载立即禁用。自动模式等待 350 毫秒后更新;关闭后可以点击转换或按 Ctrl/Cmd+Enter。显示值只改变预览,不会重新编码数据;撤销会同时恢复输入和旧结果。

从生成清单到提取配置值

三种清单表示

ConfigMap 把文本放入 data。Opaque Secret 可生成 Base64 data,也可使用明文 stringData。生成的 YAML 键和值全部带引号,避免数字、布尔字样或前导零在读取时改变类型。

遵循 Secret 覆盖规则

先验证并解码 data,再以 stringData 覆盖同名值。状态行显示实际覆盖数量。即使某个编码值稍后会被覆盖,非法 Base64 仍然报错,不会被新的明文掩盖。

保留文件中的完整文本

整文件模式保留 Unicode、CRLF 和末尾换行,以一个文件键承载全文。字符串 JSON 输入同样支持带点的键和多行字符串,但不会自动展开嵌套对象或把数组拼成文本。

错误阻止部分导出

重复键、非法名称、非字符串数据和 YAML 语法错误都会中止转换。能定位的错误显示行列并标记输入行。失败或过期的结果不能复制下载,成功导出则包含全部已接受的键。

格式边界与不会自动处理的内容

只处理文本对象
YAML 接受一个 v1 ConfigMap 或 Opaque Secret。binaryData、其他 Secret 类型、多文档、别名、合并键及自定义标签都会拒绝。解析采用保守的 YAML 1.1 子集;日期、数字或布尔字样需要明确加引号。
ENV 使用 dotenv 语义
支持的引号和注释会参与解析,变量插值与命令替换不会执行。这与保留原始引号的 kubectl --from-env-file 不同。输出不保留注释、原缩进和原引号样式;需要保留这些字符时应使用整文件模式。
字符串不做隐式推断
JSON 必须是平面字符串对象,YAML 的配置值也必须是字符串。数字、null、列表和嵌套映射不会被强转。各格式的重复键均报错;仅 Secret 的 stringData 覆盖 data 按明确规则执行。
不自动改键名
配置键最多 253 个 ASCII 字母、数字、点、连字符或下划线,不能是单独的点或以两个点开头。ENV 输出采用更窄的标识符规则,并拒绝 __proto__。文件键不兼容时整份 ENV 导出失败,不会悄悄替换字符。
输入与输出各有预算
输入和解码后的键值总量分别限制为 256 KiB,最多 1000 项,生成输出最多 1 MiB。这是本工具的资源预算,不等同于 Kubernetes 对完整对象的大小校验。非 UTF-8 文件、NUL 字节和超限内容会被拒绝。
只提取值并重建清单
源 YAML 的 labels、annotations、immutable 等字段不会保留,名称和命名空间由选项指定。这里不执行 Helm 模板、不连接集群、不生成 Pod 引用,也不检查目标环境权限或应用能否加载这些值。

创建 ConfigMap 的常见问题

怎样把 .env 文件变成 ConfigMap?

选择 ENV 输入与 ConfigMap 输出,填写对象名称。解析器去掉支持的 dotenv 引号,同时把数值字样保留为文本。检查 data 后再使用生成文件;转换不会在 Kubernetes 中创建或修改资源。

Secret 的 data 与 stringData 有什么区别?

data 中的值采用 Base64 编码;stringData 直接接收字符串。同一个键在两处出现时,stringData 优先。工具可以生成任意一种形式并读取两者,stringData 只是输入便利形式,不代表更强的保护。

Base64 编码能保护 Secret 中的密码吗?

不能。Base64 可以直接逆向解码,遮罩预览也不是加密。Secret 的保密性取决于集群访问控制和配置;下载后的文件仍需妥善保管,不能因为值经过编码就公开发布。

为什么数字和布尔值需要写成带引号的字符串?

Kubernetes 的配置数据是字符串映射。未加引号的 012 或 false 可能被 YAML 解析器读成数字或布尔值。工具输出统一加引号,读取时则拒绝非字符串,不猜测原本想表达的文本。

整文件导入与按 ENV 键值导入有什么区别?

ENV 模式把每条赋值解析成一个键。整文件模式只创建一个键,其值为完整原文。应用需要挂载 application.properties 等文件时,应选整文件模式;其中的等号是文件内容,不是额外的配置键。

注释、引号和重复键会怎样处理?

重复键会中止转换,不会默认保留最后一项。dotenv 引号影响实际值,注释被丢弃;YAML 注释与排版同样不会保留。如果这些字符属于需要挂载的文件内容,请按整文件读取。

还有没覆盖的转换场景?

先确认结构,再导出完整值

创建 ConfigMap 前可先载入示例,比较条目数和输出字段。选好应用真正需要的表示方式,检查当前结果后再显示值并导出。