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

如何在Helm YAML模板中读取JSON文件存储的变量(多AKS集群场景)

Helm模板变量引用与多AKS集群配置指南

先掰正一个关键认知

Helm模板根本不会直接读取外部JSON文件里的变量——你写的{{imageTag}}这种写法直接用是无效的。Helm模板能调用的变量,要么来自values.yaml,要么是Helm内置的(比如Release、Chart相关的变量),或者是部署时通过命令行传入的参数。

多AKS集群的配置方案(两种实用思路)

1. 拆分values.yaml(最推荐的标准玩法)

这是Helm管理多环境/多集群的常规操作,步骤清晰:

  • 先搞一个基础values.yaml,存放所有集群通用的配置:
    image:
      repository: mcr.microsoft.com/oss/nginx/nginx
      tag: 1.15.5-alpine # 这是默认的通用镜像标签,集群有特殊需求再覆盖
    
  • 给每个AKS集群单独做一个专属values文件,比如values-cluster-prod.yaml、values-cluster-dev.yaml,只写这个集群独有的配置:
    比如生产集群要用不同的镜像版本
    image:
      tag: 1.20.1-alpine
    
  • 部署的时候,同时指定基础文件和集群专属文件:
    # 部署到生产集群
    helm install my-nginx ./nginx-chart -f values.yaml -f values-cluster-prod.yaml
    
    Helm会自动把两个文件的配置合并,集群专属的配置会覆盖基础配置,完美适配多集群差异。

2. JSON转YAML临时方案(适合必须保留JSON的场景)

如果硬要保留现有的JSON文件,可以用yq工具把JSON转成YAML格式,再当成values文件用:

# 把JSON转成YAML存成临时文件
yq -o yaml < image-config.json > temp-values.yaml
# 部署时用这个临时文件
helm install my-nginx ./nginx-chart -f temp-values.yaml

但这种方式不适合多集群,因为每个集群得单独维护JSON文件,灵活性远不如拆分values.yaml。

正确的Helm模板写法

不管用哪种方案,模板里得通过Values对象来引用变量,比如:

image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

这样才能正确读取到values文件里的配置,之前直接写{{imageTag}}是不对的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:18:27