如何基于现有Kubernetes manifest构建Helm chart并自动生成values.yaml
解决方案
你不需要逐个手动修改每个Chart,有成熟的工具可以直接实现你需要的自动转换效果,两种常用路径可选:
方案1:直接用kompose生成Helm Chart
kompose本身自带生成Helm Chart的能力,不需要先转成K8s Manifest再二次修改,直接在docker-compose.yml所在目录执行以下命令即可:
kompose convert -c
执行后会直接输出完整的Helm Chart目录结构:
- 自动生成
templates目录下的所有资源模板(Deployment、Service、ConfigMap等) - 自动生成默认
values.yaml,常用可配置字段(镜像地址、服务名、端口、资源限额、环境变量等)已经提前抽成变量,和你期望的效果一致。
方案2:已有K8s Manifest的情况下用helmify转换
如果你已经用kompose生成了固定的Manifest文件,不需要重新转换,可以用helmify工具直接批量转成Helm Chart:
- 先安装helmify,直接下载对应系统二进制包或者通过Go安装均可
- 所有Manifest放在同一目录下,执行命令:
cat *.yaml | helmify <你的Chart名称>
转换完成后会自动生成符合要求的Chart:
- 所有固定值会自动提取到
values.yaml中 - templates下的资源文件对应位置会自动替换为
{{ .Values.xxx }}格式的模板变量,完全匹配你举的示例效果。
补充优化建议
你贴出的Deployment用以上两种方式处理后,输出的模板文件和values.yaml和你期望的结果完全一致,不需要手动修改任何字段。转换完成后你只需要根据实际需求做少量调整即可使用:
- 删除不需要可配置的变量,改回固定值即可
- 可统一添加Ingress、存储卷、节点亲和性等通用配置的变量,一次调整全服务生效
- 10个微服务的场景下可以进一步封装通用子Chart,所有业务服务仅需维护单独的values.yaml,后续维护效率更高。
内容的提问来源于stack exchange,提问作者manhtr76
相关产品推荐
相关产品推荐

