按依赖顺序部署Helm Charts

7
我通过Helm和Tiller在Kubernetes集群中部署多个helm子图表。 如何确保特定图表在开始安装其他图表及其容器之前完全安装其容器? 我查看了requirements.yaml和hooks,但它们都不像是我正在寻找的解决方案。
ParentDir/
    Chart.yaml
    requirements.yaml
    values.yaml
    charts/
    |
    |
    —- App1
        Chart.yaml
        values.yaml
        templates/
    —- App2
        Chart.yaml
        values.yaml
        templates/
    .
    .
    .
    —- AppN
        Chart.yaml
        values.yaml
        templates/

我有多个子图表,希望在helm安装其他图表和其容器之前确保App1的容器处于启动并准备就绪状态。


可能是 Helm 等待 Kubernetes 上的依赖部署准备就绪 的重复问题。 - David Maze
3个回答

4

你应该研究一下helmfile,并将你的堆栈分成一个应用程序对应一个 helmfile。由于文件夹内的helmfiles按字母顺序应用,因此您可以通过文件命名约定来确保顺序。

文件结构:

helmfile.d/
  00-app-1.yaml
  01-app-2.yaml
  02-app-n.yaml

使用以下命令执行:helmfile -f path/to/directory


2
我认为这与 Helm Chart 无关,但你可以使用 init containers 来解决这个问题。
如果你的 chart 中有数据库,并且被应用程序使用,但出现了崩溃,你可以使用 init container 来检查 pod 的完整生命周期。
更多信息,请参考:https://github.com/helm/helm/issues/1713

2
最近遇到了同样的问题。我有一个RabbitMQ作为Helm包,还有两个我本地构建的其他Helm包。
我想将这三个汇集在一个单独的Helm包中,但是发现没有办法安排Helm图表的安装顺序,因为例如另外两个包需要RabbitMQ凭据。
我发现使用钩子会给解决方案带来更多不必要的复杂性,而我更喜欢简单地分别安装它们,按照我想要的顺序,同时可以在步骤之间进行任何手动更改。
这里有一篇文章讨论了这个话题,可能对您有兴趣。
现在如果您愿意尝试Helmsman,可能有一种正确排序依赖项的方法。我无法对其做出任何判断,因为我刚刚发现它,但从其README中的功能下可以看出:

定义管理发布的顺序:您可以定义helmsman管理发布的优先级(对依赖项很有用)。

这里是相关的文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接