【问题标题】:Helm - Subchart dependent on other subchartHelm - 子图依赖于其他子图
【发布时间】:2019-01-31 08:23:52
【问题描述】:

我有一个父图表,其中包含两个子图表 subchart1postgressubchart1 中有一个 pre-install 作业,它为 subchart1 服务创建必要的表/模式,该作业又在其中依赖于首先安装postgres 子图表,因此当我使用pre-install 作业挂钩安装父图表时,它会失败,因为尚未安装postgres 子图表。

为了克服这个问题,我将工作从pre-install 更改为post-install or install,使用initContainer 等到安装了postgres 子图表后再开始工作,

我现在面临的问题是在进行subchart1 升级时如何确保在安装subchart1 之前运行作业

我能想到的一种方法是在subchart1 中有一个initContainer 等到工作完成,如何通知subchart1 工作完成

【问题讨论】:

    标签: kubernetes kubectl google-kubernetes-engine kubernetes-helm


    【解决方案1】:

    你可以使用 k8s 概念来解决这个问题,而不是使用 helm 概念。 您可以将 k8s 作业添加到您的 subchart1,该作业运行完成并创建所需的表。其他pod中的initContainer可以用来等待k8s作业完成。如果所需的依赖项 postgres 未启动,k8s 作业可能会失败。失败时,k8s 将确保重新运行该作业。作业运行完成。

    除了使用init-containers等待,还可以选择使用liveness和readiness-probe。就绪探测通常使用 /ready API 实现。如果就绪探测失败,则不会向 POD 发送话费。如果 liveness-probe 失败,则重新启动 POD。见k8s docs on configuring liveness and readiness probe

    【讨论】:

    • 如何通知 subchart1 作业完成?
    • 我的建议是不要使用 helm 概念来处理这个问题。建议是使用 k8s 概念。我已经更新了答案以澄清这一点。
    • 但是我们对使用helm来完成这个有严格的概念,有没有办法通过helm来完成这个,我主要对how to notify deployments in the subchart1 that the subchart1 job is finished i.e., necessary tables are created, you can start Pod creation, service creation etc感兴趣
    • @CodingNinja 是否可以使子图依赖于其他子图?
    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2013-09-18
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多