0Pricing
Helm Academy · 课时

fail 与自定义验证保护

使用清晰且可操作的错误停止渲染

fail 与自定义验证保护 是 CoddyKit 上的免费 Helm Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Helm Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Helm Academy 课程共包含 4 节课。

防止无效输入

Chart 应该尽早拒绝不合理的配置。优秀的模板可以停止渲染,并准确告知用户出了什么问题。

使用 fail 停止

fail 函数会立即停止模板渲染,并将您提供的消息打印为错误。

{{ fail "service.port must be set" }}

使用 if 进行保护

将 fail 放在 if 中,使其只在值缺失或无效时触发,而不会影响有效的安装。

{{ if not .Values.image }}{{ fail "image is required" }}{{ end }}

单个值使用 required

对于一个必填值,required 更简单:值不为空时返回该值,为空时使用您的消息报告错误。

{{ required "image.tag is required" .Values.image.tag }}

fail 与 required 的区别

需要内联要求单个值时,请使用 required;如果检查涉及多个条件或需要自定义逻辑,请使用 fail。

验证枚举值

您可以检查某个值是否属于允许的集合;当用户选择不受支持的值时,清楚地报告错误。

{{ if not (has .Values.tier (list "free" "pro")) }}{{ fail "tier must be free or pro" }}{{ end }}

提供有用的消息

请将失败消息写成建议:说明具体值和修复方法,这样用户就不必猜测安装为什么停止了。

检查组合条件

有些规则涉及两个字段。当启用的功能缺少其所依赖的配套值时,guard 可以报告错误。

{{ if and .Values.tls.enabled (not .Values.tls.secret) }}{{ fail "tls.secret needed when tls.enabled" }}{{ end }}

集中管理校验逻辑

将验证逻辑放在 _helpers.tpl 中的命名模板里,可以把检查集中到一个位置,而不必分散在每个资源文件中。

{{- include "mychart.validate" . -}}

测试校验逻辑

请使用错误的值运行 helm template,确认每个校验逻辑都会显示清晰的消息,然后再让任何内容到达集群。

也要进行架构检查

对于类型和范围规则,values.schema.json 文件可以补充 fail,在任何模板运行前就拒绝无效输入。

快速检查

快速检查验证辅助函数。

回顾

您已学会尽早阻止错误的安装:使用 fail 处理自定义的多条件校验逻辑,使用 required 处理必填的单个值。🎉

常见问题解答

「fail 与自定义验证保护」课时是免费的吗?

是的 — 「fail 与自定义验证保护」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Helm Academy 课程的其余内容,请升级到 CoddyKit PRO。 Helm Academy 课程共包含 4 节课。

「fail 与自定义验证保护」这节课中我会学到什么?

使用清晰且可操作的错误停止渲染 你通过在浏览器中直接运行的动手代码来练习 Helm Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Helm Academy 需要有经验吗?

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

「fail 与自定义验证保护」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 使用 mergeOverwrite 和 dict 进行深度合并
  2. tpl:从 Values 渲染字符串
  3. 使用 range 遍历 .Files.Glob 中的文件
  4. fail 与自定义验证保护
← 返回 Helm Academy