kubernetes - 作业完成后部署 kubernetes pod - helm

标签 kubernetes kubernetes-helm

目标 - 当使用 helm 完成特定作业时开始部署 pod。

目前我正在使用 helm 来部署 configmap/pods/jobs。当我执行“helm install”时,所有东西都会同时部署。
我可以添加延迟/触发器来说明特定作业何时完成然后只部署其他 pod。

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

最佳答案

Helm chart hooks可以做到这一点。有一系列点,Helm 可以一次部署一组资源并等待它们准备好或完成。

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

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

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

仍然有一些工作流程很难以这种方式表达。例如,如果您的服务包含一个数据库,并且您想要一个作业来运行迁移或种子数据,那么您不能真正部署数据库 StatefulSet,然后阻塞作业 Hook ,然后部署其他所有内容;您的应用程序仍然需要容忍可能未处于预期状态的事情。

关于kubernetes - 作业完成后部署 kubernetes pod - helm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60278433/

相关文章:

kubernetes - 如何在 Instio 上禁用 mtls?

docker - kubectl create deployment 无法从本地 docker repo 连接中拉取镜像被拒绝

docker - 在 Kubernetes 中使用 dind 运行私有(private)仓库

kubernetes - Helm 手无能为力

fluentd - helm 安装孵化器/Fluentd-cloudwatch 失败,错误为 : failed to download

kubernetes - Kubernetes入门-部署Docker Compose

kubernetes - 将裸机 kubernetes 集群暴露在互联网上

kubernetes - 仅在其为空时删除Kubernetes命名空间吗?

Kubernetes 探测事件不可见但失败

kubernetes - Helm chart 错误 : could not find expected ':'