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

Helm Chart不修改services字段如何按values文件名匹配对应INPUT配置

解决方案

Helm模板本身不提供直接读取当前加载的values文件名的内置能力,因为Helm会把所有通过-f参数传入的values文件合并为全局的.Values对象,不会保留单个文件的来源文件名。但你可以通过以下两种无需修改services键名的方案实现需求:

方案1:给各values文件新增独立标识字段(最稳定)

操作方式:在三个values文件中各新增一个自定义标识字段,不需要改动原有services配置:

values-version1 调整后内容

# 新增标识字段,原有services配置完全不变
envType: platform
services:
  - name: service1
  - name: service2
  - name: service3

values-version2 调整后内容

envType: infra
services:
  - name: service4 
  - name: service5
  - name: service6

values-version3 调整后内容

envType: other
services:
  - name: service7 
  - name: service8
  - name: service9

调整后的ConfigMap模板

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-confmap
data:
    {{- /* 先根据标识字段匹配对应日志路径后缀 */}}
    {{- $logSuffix := "" }}
    {{- if eq .Values.envType "platform" }}
    {{- $logSuffix = "_platform*.log" }}
    {{- else if eq .Values.envType "infra" }}
    {{- $logSuffix = "_infra*.log" }}
    {{- else if eq .Values.envType "other" }}
    {{- $logSuffix = "_other*.log" }}
    {{- end }}
    {{- /* 遍历服务列表生成对应INPUT配置 */}}
    {{- range $service := .Values.services }}
    [INPUT]
        Name              tail
        Tag               kube.*
        Path              /var/log/containers/{{ $service.name }}-*{{ $logSuffix }}
    {{- end }}

方案2:执行helm命令时传入标识参数

如果不想修改values文件内容,可以在执行helm install/upgrade时通过--set参数传入标识,和指定values文件的命令配合使用即可:
加载values-version1时执行:

helm install my-release ./my-chart -f values-version1.yaml --set envType=platform

加载values-version2时执行:

helm install my-release ./my-chart -f values-version2.yaml --set envType=infra

加载values-version3时执行:

helm install my-release ./my-chart -f values-version3.yaml --set envType=other

模板代码和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:18:03