我有分阶段部署的要求:
阶段1
-配置地图和秘密
第二阶段
-工作1
-工作2
工作 1 和工作 2 完成后,我想进入有另一份工作的阶段 3
第三阶段
- Job3(有一个就绪探针)
一旦第 3 阶段准备就绪,我想进入第 4 阶段
第 4 阶段
- 工作 4
我想知道如何在高层次上使用 helm 来实现这一点,因为钩子并没有真正等待工作完成。
我有分阶段部署的要求:
阶段1
-配置地图和秘密
第二阶段
-工作1
-工作2
工作 1 和工作 2 完成后,我想进入有另一份工作的阶段 3
第三阶段
一旦第 3 阶段准备就绪,我想进入第 4 阶段
第 4 阶段
我想知道如何在高层次上使用 helm 来实现这一点,因为钩子并没有真正等待工作完成。
Helm 没有这种级别的生命周期控制。如果“作业 3(具有准备就绪探测)”实际上是一个部署,那么您几乎可以将其硬塞到安装前和安装后的钩子中,但总的来说,这超出了 Helm 的能力。
鉴于您专门讨论的是一次性运行作业,我可能会使用它kubectl
来安装它们。您将需要某种包装脚本,然后kubectl wait
才能完成作业。这可能看起来像:
# Install the configuration; since this is persistent, it makes
# sense to manage it in Helm
helm upgrade --install -n my-app my-app .
# Delete and recreate the first set of jobs, then wait for them to finish.
kubectl delete -f stage-2.yaml || true
kubectl apply -f stage-2.yaml
kubectl wait -f stage-2.yaml --for=Complete=true
# Delete and recreate the second set of jobs, _etc._
kubectl delete -f stage-3.yaml || true
kubectl apply -f stage-3.yaml
kubectl wait -f stage-3.yaml --for=Complete=true
如果你的逻辑涉及到这个,你也可以考虑使用Kubernetes API来构建一个程序来管理 Job 对象。如果该程序在集群中运行,您可以在 Helm 图表中包含其部署和 RBAC 对象,它会自行创建作业。