kubernetes - 如何让预安装钩子等待前一个钩子完成?
问题描述
我有 2 个应该按顺序运行的预安装脚本。它们具有明显不同的权重 第二个脚本必须有第一个才能完成运行。反正有没有让 helm 支持这种行为?
而且为了奖励点,您可以制作一个预安装挂钩来阻止直到对象准备好?
场景如下:
您有一个数据库和一个应用程序。
设置是:
- 创建数据库(部署),
- 创建数据库(服务),
- 运行了一个在该数据库(作业)上创建所有数据库用户的脚本
- 启动应用程序服务器(部署)。
解决方案
首先,您需要正确设置挂钩重量。例如:
annotations:
"helm.sh/hook-weight": "5"
挂钩权重可以是正数或负数,但必须表示为字符串。当 Tiller 开始执行特定类型的钩子(例如
pre-install
钩子或post-install
钩子等)时,它将按升序对这些钩子进行排序。
根据Hooks 和 release 生命周期,默认情况下,Tiller 会等到一个钩子“就绪”后再执行下一个钩子。问题是:处理由钩子管理的脚本时,您需要将资源创建为Job
:
等到钩子准备好是什么意思?这取决于钩子中声明的资源。如果资源是 Job 类型,Tiller 将等到作业成功运行完成。如果作业失败,发布也会失败。这是一个阻塞操作,因此 Helm 客户端会在 Job 运行时暂停。
如果要运行依赖于准备就绪的数据库或应用程序的作业,最好将钩子 aspost-install
与--wait
标志结合使用。post-install
设置此标志后,Tiller 将等待直到所有发布资源都部署完毕并处于就绪状态,并且在它们就绪之前不会运行钩子。
推荐阅读
- tfs - TFS 2018 实例上出现多个 404 错误
- facebook - Facebook AR Studio - 导入动画
- javascript - angular2 rxjs Observable - 提供的参数不符合调用目标的签名
- python - 我需要了解 Python for/while 语句的逻辑。蟒蛇 3.6
- sql - 如果单个查询中的列不为空,则动态连接列 - 对于大量列
- swift - 你可以装饰一个调试中断函数来中断调用该函数的位置吗?
- c# - CLR 函数不会返回超过 4000 个字符
- vb.net - 从 SQLite DB 读取在 vb.net 中失败
- c# - Active Directory:是否可以将项目添加到 SearchResultCollection
- sql - 我如何使用子查询来获取这里的总价?