# TOML / INI / HCL / .env / Nix / dotenv / Kubernetes ConfigMap / Secret 配置格式桥

在 dotenv .env、TOML、INI、Java .properties、YAML、JSON、HCL（Terraform/Vagrant 原生语法）与 Nix 属性集之间转换配置，并可输出 Kubernetes ConfigMap / Secret 清单；保留 ${VAR} / {{var}} 模板占位符与 envsubst 风格插值、记录类型推断来源（string/int/float/bool/list）、HCL 块标签自动折叠为嵌套键，往返 diff 突出非等价设置（丢失键、类型变化、值改写），输出对 Kustomize 补丁友好的 YAML。

> 标准页面: https://elysiatools.com/zh/tools/toml-ini-hcl-envfile-nix-dotenv-kubernetes-configmap-secret-config-format-bridge

- **分类:** Format Conversion

- **关键词:** 配置转换, dotenv, TOML, INI, HCL, Terraform, Nix, ConfigMap, Secret, properties, YAML, envsubst

## 概述

所有格式先解析为一个带类型的中间表示树：标量类型（string/int/float/bool/null）、列表、嵌套对象、HCL 块标签与插值占位符均保留来源标记。dotenv 值恒为字符串（符合其语义）；INI/.properties 的裸值按 int/float/bool 推断并标记为“推断”，带引号的值保持字符串；HCL 表达式（函数、引用）逐字保留；Nix 支持 let … in、inherit、点分属性路径与 ''…'' 缩进字符串，λ 与外部引用以标记保真。输出 ConfigMap/Secret 使用 stringData（服务端合并，Secret 由 Kubernetes 负责 base64），键名按 K8s 规则净化（字母数字、-、_、.）。往返 diff 将输出重新解析后与源树逐键对比，报告 dropped/added/type/value 四类差异——这正是跨格式迁移时真正需要人工确认的清单。

## 输入项

- **配置源（粘贴一个文件）** (textarea): DATABASE_HOST=localhost DATABASE_PORT=5432 …
- **源格式** (select)
- **目标格式** (select)
- **清单名称（Kubernetes 目标）** (text): my-app-config
- **执行往返对比** (checkbox)

## 适用场景

- 将本地开发的 .env 文件或旧版 INI/properties 配置快速迁移为 Kubernetes ConfigMap 或 Secret 部署清单时。
- 在 Terraform HCL、Nix 声明式配置、TOML 与 YAML/JSON 架构之间同步或重构多环境配置数据时。
- 需要在格式转换过程中保护 CI/CD 环境变量插值占位符（如 ${VAULT_SECRET}），并校验类型推断是否失真时。

## 工作原理

- 解析输入配置并构建带类型的统一中间表示树，识别标量类型、列表、嵌套对象以及 HCL 块标签与插值占位符标记。
- 根据所选目标格式进行语法生成，针对 Kubernetes 目标自动净化键名并生成基于 stringData 的声明式 YAML 清单。
- 可选执行往返解析与对比（Round-trip Diff），重新解析目标输出并与源数据逐键比对，精确提示键丢失、新增、类型变化或值修改。

## 使用案例

- 将开发环境 .env 配置文件转换为微服务部署所需的 Kubernetes ConfigMap 清单。
- 将 Terraform HCL 基础设施变量与资源定义导出为 Nix 表达式或 TOML 配置以统一管理。
- 把遗留系统的 Java .properties 或 INI 配置文件批量迁移为现代微服务通用的 YAML / JSON 格式。

## 常见问题

### 转换到 Kubernetes ConfigMap 或 Secret 时，如何处理包含特殊字符的键名？

工具会自动根据 Kubernetes 命名规则净化键名，仅保留字母、数字、短横线、下划线及点号，确保清单合法有效。

### 环境变量模板占位符（如 ${DATABASE_PASSWORD}）会被自动求值或破坏吗？

不会，所有 ${VAR}、{{var}} 和 envsubst 风格的模板占位符均作为原生字符串逐字保留，便于交付后续 CI/CD 流程替换。

### 生成 Kubernetes Secret 时为什么使用 stringData 而不是 data？

采用 stringData 允许直接保留明文字符串和模板占位符，应用到集群时由 Kubernetes 服务端自动处理 Base64 编码，更加直观且易于维护。

### 往返对比（Diff）功能的作用是什么？

往返对比会将输出内容重新解析并与源 AST 树对比，准确列出由于格式语义差异引起的键丢失、类型变动或数值变更，避免隐式转换错误。

### Terraform HCL 中的块标签在转换为 JSON 或 YAML 时如何呈现？

工具会自动将 HCL 块标签折叠为层级嵌套键（例如 resource "aws_instance" "web" 折叠为 resource.aws_instance.web 对象）。

## 相关工具

- [YAML-JSON转换器](https://elysiatools.com/zh/tools/yaml-json-converter): 在YAML和JSON格式之间转换
- [WireGuard/OpenVPN 到 Clash 与 sing-box 配置桥接器](https://elysiatools.com/zh/tools/wireguard-openvpn-to-clash-singbox-bridge): 将粘贴的 WireGuard 或 OpenVPN 客户端文本转换为 Mihomo/Clash YAML 或 sing-box JSON，并报告密钥字段；请勿分享私钥
- [JSONata 查询转换工作室](https://elysiatools.com/zh/tools/jsonata-query-transform-studio): 预览 JSONata 风格查询与转换，支持多数据对比，并导出 JSON、CSV、YAML 或 Markdown。
- [HCL-JSON转换器](https://elysiatools.com/zh/tools/hcl-json-converter): 在HashiCorp配置语言(HCL)和JSON格式之间转换，用于Terraform配置
- [文本转Excel转换器](https://elysiatools.com/zh/tools/text-to-excel): 将各种文本格式转换为Excel，支持自定义解析和格式化选项
- [文本转JSON转换器](https://elysiatools.com/zh/tools/text-to-json): 将各种文本格式转换为JSON，支持自定义解析选项
- [TOML-JSON转换器](https://elysiatools.com/zh/tools/toml-json-converter): 在TOML和JSON格式之间转换，支持注释和复杂数据结构
- [配置文件语义 Diff](https://elysiatools.com/zh/tools/config-file-semantic-diff): 比较 JSON、YAML、TOML 和 dotenv 配置，按键路径显示变化并忽略排序与格式噪声。

## 示例

- [Kubernetes YAML 示例](https://elysiatools.com/zh/samples/kubernetes-yaml): 完整的 Kubernetes YAML 清单文件，包含 Deployment、Service、ConfigMap、Secret、Ingress 和其他必要资源
- [分布式追踪示例](https://elysiatools.com/zh/samples/distributed-tracing-samples): 使用 Jaeger、OpenTelemetry 和其他现代可观测性工具的综合分布式追踪示例，适用于微服务架构
- [Docker 和 Kubernetes 示例](https://elysiatools.com/zh/samples/docker-kubernetes): 容器编排基础示例，包括Dockerfile、Docker Compose和Kubernetes清单，用于现代应用部署
- [OpenAPI/Swagger 示例](https://elysiatools.com/zh/samples/openapi-swagger): 使用 OpenAPI 3.0 和 Swagger 规范的 RESTful 服务综合 API 文档示例
