舵-取决于其他子图的子图

时间:2018-08-24 20:46:57

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

我有一个包含两个子图表subchart1postgres的父图表,并且pre-install中有一个subchart1作业,它为{{1 }}服务中,该工作依次取决于首先要安装的subchart1子图表,因此当我使用postgres作业挂接安装父图表时,它失败了,因为pre-install尚未安装子图表。

为解决此问题,我将作业从postgres更改为pre-install,使用post-install or install等到安装了initContainer子图表后才能开始作业

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用k8s概念来解决此问题,而不是使用掌舵概念。 您可以向您的subchart1添加一个k8s作业,该作业将运行到完成并创建所需的表。其他窗格中的initContainer可用于等待k8s作业完成。如果所需的依赖项postgres未启动,则k8s作业可能会失败。如果出现故障,k8s将确保重新运行该作业。这项工作已经完成。

除了使用init容器等待之外,您还可以选择使用活动性和就绪性探针。准备情况探测器通常使用/ ready API来实现。如果准备就绪探针失败,则不会将目标数据发送到POD。如果活动探针失败,则重新启动POD。参见k8s docs on configuring liveness and readiness probe