You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Helm中跳过指定模板部署?Chart.yaml能否添加自定义属性?

仅部署指定模板文件的实现方法

你可以根据你的Helm版本选以下任意一种方案实现:

  • 方案1(适用于Helm 3.10及以上版本):使用--include参数直接指定需要部署的模板文件,执行命令时注意路径和你实际目录结构匹配(如果你的模板目录实际为template就对应调整路径):
helm install app1-release ./my-charts/app1 \
  --include templates/app1-microservice1-deployment.yaml \
  --include templates/app1-microservice1-service-defintion.yaml

如果是升级操作,把install换成upgrade即可。

  • 方案2(全版本兼容,更推荐):给模板添加条件渲染开关
    在values.yaml中新增每个微服务的启用配置:
microservices:
  microservice1:
    enabled: true
  microservice2:
    enabled: false

然后在所有app1-microservice2开头加上条件判断:

{{- if .Values.microservices.microservice2.enabled }}
# 原有模板的全部内容
{{- end }}

后续部署时默认就只会渲染microservice1的资源,需要部署microservice2时只要把对应enabled值改为true即可。


相关问题解答

将microservice2相关文件加入.helmignore是否会跳过部署?

不会。.helmignore的作用仅为执行helm package打包Chart时,忽略指定文件不打入最终的tgz包,完全不影响helm install/upgrade时的模板渲染逻辑。如果你是直接用本地目录部署,哪怕把文件加入.helmignore,Helm还是会渲染所有templates(或你命名的template)目录下的YAML文件。

该场景的行业最佳实践是什么?

  • 优先使用条件渲染+values开关的方案,兼容性最高,部署逻辑全部固化在配置中,不会因为命令输入错误导致部署不符合预期,后续调整部署范围只要修改values配置即可。
  • 如果两个微服务迭代节奏独立、关联性低,建议拆分为独立的子Chart,用伞形Chart(Umbrella Chart)统一管理,后续要部署哪个服务只要开启对应子Chart的开关即可,更符合Helm的设计规范。
  • 生产环境不建议使用临时加--include参数的方式部署,容易出现参数漏传、路径写错等人为失误。

Chart.yaml根层级添加自定义属性的影响

Helm 3允许在Chart.yaml根层级添加自定义字段,不会触发报错,也不会影响Helm的核心功能。这些自定义字段可以直接在模板中通过.Chart对象访问,比如你示例中的projectNames可以通过{{ .Chart.projectNames }}取值,imageRepo.microservice1可以通过{{ .Chart.imageRepo.microservice1 }}取值。

不过官方推荐自定义字段尽量放在annotations字段下,避免后续Helm版本更新新增官方根字段时,和你的自定义字段命名冲突,导致逻辑异常。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:48:03