【问题标题】:How to manage duplicate dependencies in subcharts in a Helm Umbrella Chart?如何在 Helm 伞形图中管理子图中的重复依赖项?
【发布时间】:2022-08-09 14:44:53
【问题描述】:

我有一个我正在尝试编写的 Helm Umbrella Chart,它依赖于 2 个图表(为简单起见)。图表 A 和图表 B。图表 A 和图表 B 都定义了对图表 C 的依赖关系。当我编写 Umbrella 图表时,我指定了对图表 A 和 B 的依赖关系。当我尝试安装我的 Umbrella 图表时出现错误:

错误:安装失败:serviceaccounts \"chart-c\" 已经存在

我猜这是因为 Chart A 和 Chart B 都在尝试安装 Chart C 应用程序。如何在我的伞形图中管理这些依赖关系?

  • 我的理解是,如果伞形图表依赖于 A 和 B,然后 A 和 B 都依赖于 C,Helm 的通常行为是只安装一次 C,所有这些都作为同一版本的一部分。您是否单独安装了这些图表?在图表对象命名中,您是否包含 Helm {{ .Release.Name }} 或使用包含它的帮助模板?
  • 我没有单独安装任何图表。在图表名称中,我没有使用 `{{ .Release.Name }} 它只是硬编码(在本例中为 mysql)。
  • 虽然图表中会有很多细节,但您可以尝试编辑问题以包含minimal reproducible example 吗?很难判断重复的服务帐户可能来自何处。在本地,您可以尝试在父图表上运行 helm template,这将写出呈现的 YAML,并可能会提示您重复服务帐户的来源。
  • 感谢您使用helm template 的建议 - 这样做时,我当然会看到 2 个 mysql 服务帐户都命名为 release-name-mysql。我不确定这是否是写入解决方案,但我所做的是在重复对象周围添加 if 块,然后在我的伞值文件中关闭重复项。

标签: kubernetes-helm helm3


【解决方案1】:

我认为您可以使用alias 做到这一点。
Chart.yaml 文件的依赖项部分。

dependencies:
  - name: mongodb
    version: 12.1.2
    repository: https://charts.bitnami.com/bitnami
    alias: mongodb
    condition: mongodb.enabled
  - name: mongodb
    version: 12.1.2
    repository: https://charts.bitnami.com/bitnami
    alias: mongodb-tracing
    condition: mongodb-tracing.enabled

您可以阅读有关别名here 的更多信息

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多