【问题标题】:Helm umbrella chart with mutual exclusive subcharts managed with a single flagHelm 伞形图表,带有使用单个标志管理的互斥子图表
【发布时间】:2020-01-16 16:51:37
【问题描述】:

我正在使用 helm 2.16。我有一个具有这种结构的图表:

umbrella
  |-charts
      |-subchart1
      |-subchart2

我希望能够通过使用单个标志(subchart1 或 subchart2)安装伞形图 + subchart1 伞形图 + subchart2,并将该标志的默认设置为 subchart1。

由于不能否定需求的舵图条件,除了用 IF 保护图表之一的所有资源之外,还有其他可用的解决方案吗?

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    我发现的一种解决方法是将所有子图表放入一个子图表文件夹中,并拥有类似于下面的requirements.yaml 配置文件:

    dependencies:
      - name: subchart1
        version: example-version
        repository: "subchart1-directory"
        alias: postgresql
        condition: subchart1.enabled
      - name: subchart2
        version: example-version
        repository: "file://subcharts/subchart2"
        condition: subchart2.enabled
    

    values.yaml 中添加

    subchart1:
      enabled: true    
    subchart2:
      enabled: false
    

    然后在安装过程中,将值传递给启用或禁用 subchart1,如下所示:

    $ helm install --set subchart1.enabled=true
    

    $ helm install --set subchart1.enabled=false
    

    看看这里:helm-charts-managementhelm-chart-dependences

    【讨论】:

    • 所以我需要我的两个子图表相互排斥:安装一个或另一个,但不能同时安装。我怎样才能用一个标志来实现呢?
    • 正如您所要求的,我找到了解决方案,使您能够安装伞形图 + 子图 1 或伞形图 + 子图 2。你必须在我写 subchart1 时标记为启用,然后如果你想安装 subchart2 启用它并禁用 subchart1。
    • 是的,所以需要两个标志,对吧?我看到 2 个标志的问题是我的图表的用户可能会让它们都启用我的错误。如果我可以使用单个标志配置互斥,那将不会发生。
    • 默认情况下,所有子图都标记为 true,如果您将特定子图的 flag enabled 更改为 false,则不会安装。
    猜你喜欢
    • 2022-08-09
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多