执行helm install XYZ命令时最先运行的文件/脚本是哪个?
helm install 执行时各文件的处理优先级 首先纠正一个常见认知:Chart.yaml、values.yaml都属于静态配置文件,本身不存在“被运行”的逻辑,Helm会按固定顺序读取、解析这些配置,再完成后续渲染、资源下发动作,完整流程的先后顺序如下:
- 第一步:读取解析
Chart.yaml
这是整个流程最先触发的动作。Helm会首先读取chart根目录下的Chart.yaml,校验apiVersion、chart名称、版本号等必填元数据字段,确认目标是合法的Helm Chart,字段缺失、格式错误会直接报错终止。这一步不会读取values、模板等其他任何文件。 - 第二步:分层加载合并Values配置
元数据校验通过后,Helm会按优先级从低到高加载所有values配置,后加载的同名字段会覆盖前面的配置:- 先加载chart自带的默认
values.yaml - 再加载用户通过
-f/--values参数指定的自定义values文件 - 最后合并用户通过
--set、--set-string等命令行参数直接传入的配置
所有配置合并为最终的values集合后,才会进入模板渲染环节。
- 先加载chart自带的默认
- 第三步:渲染templates目录下的模板文件
拿到最终values后,Helm会遍历templates/目录下的所有模板文件,通过Go模板引擎注入values值,渲染生成标准的Kubernetes资源清单,同时完成模板语法、资源格式校验,校验失败直接终止流程。 - 第四步:按规则执行钩子资源
渲染完成后Helm不会立刻下发普通业务资源,会先识别所有带helm.sh/hook注解的钩子资源,按类型、权重排序执行:- 最先执行
pre-install类型的前置钩子(一般是初始化作业、前置检查类资源),权重值越小优先级越高,同权重按资源名称字典序执行 - 所有
pre-install钩子执行成功后,才会批量把普通K8s资源下发到集群 - 普通资源部署完成后,最后执行
post-install类型的后置钩子
- 最先执行
只有最终提交到Kubernetes集群的Job、Deployment等工作负载资源才会真正被集群运行,
Chart.yaml、values.yaml、模板文件本身都只是Helm在本地处理的静态配置,不会被发送到集群执行。
内容的提问来源于stack exchange,提问作者Prasun Sukai
相关产品推荐
相关产品推荐

