我有一个包含两个子图表subchart1
和postgres
的父图表,并且pre-install
中有一个subchart1
作业,它为{{1 }}服务中,该工作依次取决于首先要安装的subchart1
子图表,因此当我使用postgres
作业挂接安装父图表时,它失败了,因为pre-install
尚未安装子图表。
为解决此问题,我将作业从postgres
更改为pre-install
,使用post-install or install
等到安装了initContainer
子图表后才能开始作业
我现在面临的问题是在进行postgres
升级时如何确保在安装subchart1
之前运行作业
我能想到的一种方法是,在subchart1
中有一个initContainer
,等待作业完成,如何通知subchart1
作业已完成
答案 0 :(得分:0)
您可以使用k8s概念来解决此问题,而不是使用掌舵概念。
您可以向您的subchart1
添加一个k8s作业,该作业将运行到完成并创建所需的表。其他窗格中的initContainer
可用于等待k8s作业完成。如果所需的依赖项postgres
未启动,则k8s作业可能会失败。如果出现故障,k8s将确保重新运行该作业。这项工作已经完成。
除了使用init容器等待之外,您还可以选择使用活动性和就绪性探针。准备情况探测器通常使用/ ready API来实现。如果准备就绪探针失败,则不会将目标数据发送到POD。如果活动探针失败,则重新启动POD。参见k8s docs on configuring liveness and readiness probe