我目前有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
目录中?
答案 0 :(得分:0)
好的,这很容易。如果系统中到处都有多个Helm图表,则可以创建依赖项而无需更改其位置。
使用问题中指定的结构,我们可以在 requirements.yaml (头盔版本:2.x.x
)或 Chart.yaml (Helm版本:3.x.x
)。我当前正在使用 Helm v2.16.1 。
现在只需运行helm dependency update
或helm dep up
,即可在 masterRepo <<中创建一个 图表 目录/ strong>。现在, masterRepo 的更新结构如下:
masterRepo/
├── charts/
└── chartA-1.tgz
└── chartB-1.tgz
├── templates/
├── Chart.yaml
├── requirements.lock
├── requirements.yaml
├── values.yaml
添加的新文件/目录为:
要有条件地安装子图表,可以遵循 masterRepo 的 values.yaml 文件:
repoA:
enabled: True
repoB:
enabled: True
现在,从 masterRepo 内部执行一个简单的helm install
命令将部署 masterRepo 以及它是依赖项( chartA 和 chartB )。
希望这会有所帮助。快乐头盔!