您如何制作预安装挂钩来等待上一个挂钩的完成?

时间:2019-10-27 17:12:27

标签: kubernetes kubernetes-helm

我有2个应按顺序运行的预安装脚本。 他们的权重明显不同 第二个脚本必须具有第一个脚本才能完成运行。 无论如何,有没有让头盔支持这种行为?

还有一个好处是,您可以制作一个预安装钩来阻塞直到对象准备就绪吗?

情况如下:

您有一个数据库和一个应用程序。

设置为:

  1. 创建数据库(部署)
  2. 创建数据库(服务)
  3. 运行一个脚本,该脚本在该数据库(作业)上创建所有数据库用户
  4. 启动应用程序服务器(部署)。

1 个答案:

答案 0 :(得分:0)

首先,您需要正确设置hook weights。例如:

  annotations:
    "helm.sh/hook-weight": "5"
  

挂钩重量可以为正数或负数,但必须为   表示为字符串。当蒂勒开始执行   特定种类的钩子(例如pre-install钩子或post-install   钩子等),它将按升序对这些钩子进行排序。

根据Hooks and release lifecycle,默认情况下,分耕机在执行下一个钩子之前一直等到钩子变为“就绪”为止。问题是:处理由挂钩管理的脚本时,您需要将资源创建为Job

  

等待钩子准备好意味着什么?这取决于   在挂钩中声明的资源。如果资源是Job类型,请使用Tiller   将等待,直到作业成功运行完成。如果   作业失败,发布将失败。 这是阻止操作 ,因此   作业运行时,Helm客户端将暂停。

如果您要运行依赖于数据库或应用程序的“就绪”作业,最好将钩子用作post-install,并与--wait标志结合使用。设置此标志后,Tiller将等待直到所有发布资源都已部署并处于就绪状态,直到它们准备就绪,才会运行post-install挂钩。