0Pricing
DevOps Bootcamp · 课时

Hook 权重与排序

以确定性方式安排多个 Hook 的顺序

Hook 权重与排序 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

顺序很重要

当多个钩子共享同一个事件时,执行顺序可能很重要。例如,迁移运行前可能必须先创建密钥。Helm 会使用权重对钩子排序。

权重注解

您可以使用 helm.sh/hook-weight 注解设置执行顺序。它的值是一个包含数字的字符串,Helm 会据此对同一事件的钩子进行排序。

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

数值越小越先执行

Helm 按升序排列权重,因此数值最小的钩子最先执行。权重为 -5 的钩子会先于权重为 0 的钩子执行,而权重为 0 的钩子又会先于权重为 10 的钩子执行。

允许使用负数

权重可以是负数。如果希望设置钩子先于所有默认权重为 0 的钩子执行,可以为它指定类似 负五 的值。

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

为数字加引号

权重值必须是带引号的字符串,即使它表示的是数字。请将它写成带引号的 "10",而不是不带引号的 10,否则该注解无效。

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

默认值为零

没有设置权重注解的钩子会被视为权重为零。因此,您可以将零作为基准,在它之前或之后安排其他钩子。

先按事件分组

权重只会在同一事件内进行排序。安装前钩子不会与安装后钩子交错执行;所有安装前钩子执行完毕后,才会执行后续事件。

权重相同时按名称排序

如果两个钩子的权重相同,Helm 会退而按资源名称的字母顺序对它们排序。如果执行顺序确实很重要,使用不同的权重会更清晰。

每个权重级别执行完毕

Helm 会逐个权重级别运行钩子,并等待当前钩子就绪后再运行下一个。因此,设置钩子会先完全执行完毕,然后它准备的迁移才会开始。⏳

一个实用示例

假设有一个权重为 -5 的创建密钥钩子,以及一个权重为 0 的迁移钩子。Helm 会保证密钥先创建完成,因此迁移可以读取它。

# secret hook
"helm.sh/hook-weight": "-5"
# migration hook
"helm.sh/hook-weight": "0"

拉开权重间隔

请在权重之间留出间隔,例如使用 10、20、30,而不是 1、2、3。这样以后可以在中间插入新的钩子,而不必重新编号其他钩子。📐

快速检查

有两个安装前钩子,权重分别为 -5 和 10。您需要判断哪个会先执行。

回顾

hook-weight 注解使用带引号的数字,将同一事件的钩子按从低到高的顺序排列。默认值为零,权重相同时按名称排序。🔢

常见问题解答

「Hook 权重与排序」课时是免费的吗?

是的 — 「Hook 权重与排序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「Hook 权重与排序」这节课中我会学到什么?

以确定性方式安排多个 Hook 的顺序 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「Hook 权重与排序」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Hook 是什么以及何时触发
  2. 数据库迁移 pre-upgrade Job
  3. Hook 权重与排序
  4. Hook 删除策略
← 返回 DevOps Bootcamp