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

ArgoCD单个应用部署多个Helm图表失败问题咨询

问题

我尝试在ArgoCD中通过Helm图表部署不同的Kafka服务(Kafka broker、Schema Registry、KSQLDB和Kafka UI),希望将这4个图表部署在同一个ArgoCD应用下。启用DIRECTORY RECURSE: true后无法创建应用,报错信息:

Unable to save changes: application spec is invalid: InvalidSpecError: Unable to generate manifests in kafka: rpc error: code = FailedPrecondition desc = Failed to unmarshal "configmap.yaml": failed to unmarshal manifest: json: offset 2: invalid character '{' looking for beginning of object key string

已尝试的操作:

  • 使用helm pull <chart-name>命令从Helm仓库将4个图表分别下载到本地不同目录
  • 将代码推送到Git仓库
  • 在ArgoCD中创建指向根目录的新应用
  • 将类型设置为DIRECTORY而非HELM,并勾选DIRECTORY RECURSE
  • 创建应用时出现上述报错
  • 单独为每个图表创建应用(对应图表目录)可正常运行

注:每个Helm图表均包含模板文件及values.yaml文件。

疑问:

  1. 是否可在单个ArgoCD应用中部署多个不同Helm图表?
  2. 我遗漏了什么?
  3. 该问题是否与GitHub上的相关讨论有关?

回答

1. 能否在单个ArgoCD应用中部署多个Helm图表?

可以,但不能用DIRECTORY RECURSE模式直接处理多个独立Helm图表目录。因为DIRECTORY模式是用来解析原生Kubernetes清单文件的,而Helm图表包含带{{ ... }}占位符的模板文件,ArgoCD会把这些模板当成普通K8s清单尝试解析,自然会出现反序列化错误——模板语法不属于合法的YAML/JSON格式。

2. 你遗漏的核心操作:选择正确的多Helm图表部署方式

方案一:使用ApplicationSet(推荐)

通过ApplicationSet的Git Generator或List Generator自动生成多个子应用,每个子应用对应一个Helm图表目录,且每个子应用都用HELM模式渲染。这样既能在ArgoCD中统一管理所有服务,又能保证每个Helm图表的正常渲染。

方案二:构建Helm Umbrella Chart

把4个Kafka相关图表作为依赖添加到一个父级umbrella chart中,在父chart的Chart.yaml里声明所有子chart的版本和仓库地址,然后通过单个ArgoCD应用(HELM类型)部署这个umbrella chart。

方案三:嵌套ArgoCD应用

在Git根目录创建一个存放ArgoCD应用清单的目录,每个清单对应一个Helm图表的应用配置(指定HELM类型、图表目录、values文件等),然后用DIRECTORY模式部署这个根目录,让ArgoCD自动创建并管理这些嵌套应用。

3. 关于GitHub讨论的关联

你提到的讨论确实围绕多Helm图表在单个ArgoCD应用下的部署问题,核心结论和上述分析一致:DIRECTORY模式不支持递归处理多个Helm图表,必须通过ApplicationSet、Umbrella Chart或嵌套应用这类方式解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:55:26