我想在同一个存储库中维护一些Helm图表,这些图表在各自的requirements.yaml
文件中相互引用。这些图表应该如何引用彼此的相对路径?
对于本地开发,我可以使用
中的file://
协议
name: chart-name
repository: file://../chart-name
但是当我移动到托管存储库时,我需要更改它。我希望这个图表目录不需要将其最终位置烘焙到其repository.yaml文件中。这可能吗?
答案 0 :(得分:0)
当您迁移到托管存储库时,您不必发布每个图表吗? 如果是这样,只要您不具有循环依赖关系,请按照从属顺序将每个图表发布到您的托管仓库,然后更新requirements.yaml。
即。如果您有3个图表A,B和C.
将A发布到托管仓库,更新B的要求以指向A的托管仓库名称,然后发布B并重复C的更新过程。
我做了类似的事情,但我没有使用托管回购。我已经有一个大的Ansible设置,所以我写了一个直接从目录安装图表的角色。有一个git repo包含所有(目前为7个)我的图表,这个减去运行helm服务器是一个类似的过程。明显的缺点是手动更新需求,但我不确定是否还有其他选择。
修改强>
有点hacky但可以工作:
要避免编辑依赖项,一种方法是在本地运行图表存储库。
如果您的仓库在charts.domain.com
处可用,请按照常规
dependencies:
- name: my-chart
repository: http://charts.domain.com
version: 0.0.1
然后,当您在本地开发时,在主机文件中添加一个条目,该条目将charts.domain.com
指向您的localhost
图表。
示例工作流程可能类似于:
mkdir my-charts
mv my-char-a-0.0.1.tgz my-charts/
helm repo index my-charts/ --url http://charts.domain.com
现在提供从localhost生成的索引/ repo。这样,您的依赖关系始终是chart.domain.com
根据您正在使用的远程主机,当您乐意发布时,可以将此本地索引同步到您的遥控器,这样可以减少本地和遥控器发散的可能性。
同样,请注意,您需要启用禁用此主机条目,具体取决于您是否正在开发或想要使用实时存储库。 您始终可以编辑主机文件条目的脚本。