作业完成后部署Kubernetes Pod-Helm

时间:2020-02-18 10:12:09

标签: kubernetes kubernetes-helm

目标-使用头盔完成特定作业后,开始部署pod。

当前,我正在使用头盔来部署configmap / pods / jobs。当我执行“ helm install”时,所有内容都将同时部署。 我可以添加延迟/触发来说明何时完成特定作业,然后仅部署其他Pod。

我尝试使用“初始容器”,但是很难在“初始容器”中获得工作状态

2 个答案:

答案 0 :(得分:2)

Helm chart hooks可以做到这一点。在许多方面,Helm可以一次部署一组资源,然后等待它们准备就绪或完成。

对于您要描述的内容,使用注释将作业标记为预安装挂钩就足够了:

apiVersion: batch/v1
kind: Job
metadata:
  annotations:
    "helm.sh/hook": pre-install

在挂钩成功执行之前,将不会部署图表中的其他任何资源。如果作业失败,它将阻止部署任何其他资源。这个pre-install挂钩仅在首次安装时运行,但是如果您希望挂钩在升级或回滚时运行,则有相应的挂钩可以执行此操作。

仍有一些工作流很难用这种方式表达。例如,如果您的服务包括一个数据库,并且您想要一个作业来运行迁移或种子数据,那么您将无法真正部署数据库StatefulSet,然后在Job挂钩上进行阻塞,然后再部署其他所有内容;您的应用程序仍然需要容忍某些事情,可能无法达到预期的准确状态。

答案 1 :(得分:0)

这有点超出了Helm的操舵室。您可以使用Hooks来获得一些相对简单的形式,但是许多人发现它们随着复杂性的增加而感到沮丧。这种模式的更完整形式需要编写一个运算符。