如何通过Helmfile用prod.yaml控制Server Deployment的移除与恢复
解决方案
核心思路是利用Helm values的合并优先级:prod.yaml作为后加载的values文件,优先级高于server/values.yaml,通过将指定的server配置设为null来覆盖并删除原配置项,最终让Chart模板不生成对应Deployment。
步骤1:确保Helmfile加载prod.yaml
修改helmfile.yaml中server release的配置,把prod.yaml加入values加载列表(放在server/values.yaml之后,保证优先级更高):
releases: - name: server chart: ./server values: - ./server/values.yaml # 基础配置 - ./prod.yaml # 环境/开关配置,优先级更高
步骤2:在prod.yaml中添加禁用配置
要禁用10021对应的Deployment,直接在prod.yaml中添加以下内容:
server: 10021: null
当Helm合并values时,server.10021会被覆盖为null,如果你的Chart模板是通过遍历.Values.server下的key来生成Deployment的(类似常规多实例Chart的模板逻辑),这个null项会被跳过,不会生成对应的Deployment,执行helmfile apply或helm upgrade时就会删除原有的10021 Deployment。
步骤3:恢复Deployment的操作
如果要恢复10021的Deployment,只需要删除prod.yaml中server.10021: null这一行(或注释掉),重新执行helmfile apply即可,Helm会重新读取server/values.yaml中的原始配置,生成对应的Deployment。
扩展:禁用多个server
如果需要禁用多个server,直接在prod.yaml中添加多个null配置:
server: 10021: null 10001: null
内容的提问来源于stack exchange,提问作者kui wu
相关产品推荐
相关产品推荐

