【问题标题】:Conditionally manage Helm chart dependencies without keeping the child charts inside 'charts' directory有条件地管理 Helm 图表依赖项,而不将子图表保留在“图表”目录中
【发布时间】:2019-12-16 13:53:24
【问题描述】:

我目前有 3 个 Helm 存储库,结构如下:

repoA/
├── templates/
├── Chart.yaml
├── values.yaml

repoB/
├── templates/
├── Chart.yaml
├── values.yaml

masterRepo/
├── templates/
├── Chart.yaml
├── values.yaml
├── requirements.yaml

ma​​sterRepo 中的 requirements.yaml 文件如下所示:

dependencies:
- name: repoA
  version: "1.0"
  repository: "file://../repoA"
  condition: repoA.enabled
- name: repoB
  version: "1.0"
  repository: "file://../repoB"
  condition: repoB.enabled

我只想使用 ma​​sterRepo 来部署依赖的 Helm 图表。

我知道我可以手动将所有子存储库放在 masterRepo/charts 中,它会起作用,但我想保持这些存储库独立,以便其他主存储库可以使用任何一个

如何使父 Helm 图表检测到所有必需的 Helm 图表并有条件地安装它们(基于 repoX.enabled 变量)而不将依赖存储库保留在 Master-helm-chart 的 charts 目录中?

【问题讨论】:

    标签: yaml kubernetes-helm


    【解决方案1】:

    如果您在系统中的不同位置有多个 Helm 图表,则可以在不更改其位置的情况下创建依赖关系。

    有了问题中指定的结构,我们可以在requirements.yaml(Helm版本:2.x.x)或Chart中添加依赖.yaml(Helm 版本:3.x.x)。我目前正在使用 Helm v2.16.1

    现在只需从masterRepo 目录中运行helm dependency updatehelm dep up 并创建一个charts 目录。现在 ma​​sterRepo 的更新结构如下:

    masterRepo/
    ├── charts/
           └── chartA-1.tgz
           └── chartB-1.tgz
    ├── templates/
    ├── Chart.yaml
    ├── requirements.lock
    ├── requirements.yaml
    ├── values.yaml
    

    新增的文件/目录有:

    1. ChartA-1.tgzChartB-1.tgz TAR Archive files 只不过是压缩的 chartAchartB 图表。
    2. requirements.lock:用于重建charts/目录。在this SO post 中阅读有关此文件的更多信息。

    要有条件地安装子图表,您可以按照 ma​​sterRepovalues.yaml 文件:

    repoA:
      enabled: True
    repoB:
      enabled: True
    

    现在,来自 ma​​sterRepo 内部的简单 helm install 命令将部署 ma​​sterRepo 及其依赖项(chartAchartB)。

    希望这会有所帮助。掌舵快乐!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2021-02-28
      相关资源
      最近更新 更多