是否在不将子图保留在“ parent / charts”目录中的情况下管理Helm图依赖关系?

时间:2019-12-16 13:53:24

标签: yaml kubernetes-helm

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

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

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

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

masterRepo 中的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

我只想使用 masterRepo 来部署相关的Helm图表。我已经分别尝试了相关图表( repoA repoB ),它们都可以正常工作。

我知道我可以手动将三个子存储库放入masterRepo/charts,并且可以工作,但是我想保持这些存储库独立,以便其他主存储库可以使用它们中的任何一个。

我不确定自己在做什么错,但是helm dependency update对我来说不起作用。它什么都不干。

此外,如果我使用helm install release-name -f values.yaml安装 masterRepo ,则只会安装masterRepo/templates资源,而忽略子存储库。

该如何使父Helm图表检测子项并有条件地安装子项(基于repoX.enabled变量),而不必将相关存储库保留在主舵图表的charts目录中?

1 个答案:

答案 0 :(得分:0)

好的,这很容易。如果系统中到处都有多个Helm图表,则可以创建依赖项而无需更改其位置。

使用问题中指定的结构,我们可以在 requirements.yaml (头盔版本:2.x.x)或 Chart.yaml (Helm版本:3.x.x)。我当前正在使用 Helm v2.16.1

现在只需运行helm dependency updatehelm dep up,即可在 masterRepo <<中创建一个 图表 目录/ strong>。现在, masterRepo 的更新结构如下:

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

添加的新文件/目录为:

  1. ChartA-1.tgz ChartB-1.tgz TAR Archive files都不是但压缩了 chartA chartB 图表。
  2. requirements.lock :用于重建图表/目录。在this SO post中了解有关此文件的更多信息。

要有条件地安装子图表,可以遵循 masterRepo values.yaml 文件:

repoA:
  enabled: True
repoB:
  enabled: True

现在,从 masterRepo 内部执行一个简单的helm install命令将部署 masterRepo 以及它是依赖项( chartA chartB )。

希望这会有所帮助。快乐头盔!