如何在同一个存储库中引用helm图表

时间:2017-12-04 19:32:59

标签: kubernetes-helm

我想在同一个存储库中维护一些Helm图表,这些图表在各自的requirements.yaml文件中相互引用。这些图表应该如何引用彼此的相对路径?

对于本地开发,我可以使用

中的file://协议
name: chart-name
repository: file://../chart-name

但是当我移动到托管存储库时,我需要更改它。我希望这个图表目录不需要将其最终位置烘焙到其repository.yaml文件中。这可能吗?

1 个答案:

答案 0 :(得分:0)

当您迁移到托管存储库时,您不必发布每个图表吗? 如果是这样,只要您不具有循环依赖关系,请按照从属顺序将每个图表发布到您的托管仓库,然后更新requirements.yaml。

即。如果您有3个图表A,B和C.

  1. A不依赖于B或C
  2. B取决于A
  3. C取决于B
  4. 将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

    根据您正在使用的远程主机,当您乐意发布时,可以将此本地索引同步到您的遥控器,这样可以减少本地和遥控器发散的可能性。

    同样,请注意,您需要启用禁用此主机条目,具体取决于您是否正在开发或想要使用实时存储库。 您始终可以编辑主机文件条目的脚本。