0Pricing
DevOps Bootcamp · 课时

使用 range 遍历 .Files.Glob 中的文件

从文件目录生成 ConfigMaps

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

在 Chart 中打包文件

Chart 可以在模板旁附带额外的文件。.Files 对象让您的模板能够读取这些打包的文件。

使用 Glob 匹配文件

.Files.Glob 方法会返回路径与指定模式匹配的文件,例如配置目录下的所有文件。

{{ $files := .Files.Glob "configs/*.conf" }}

遍历匹配结果

将 Glob 与 range 配合使用,可以遍历每个匹配的文件,并在循环中获取它的路径和原始字节。

{{ range $path, $bytes := .Files.Glob "configs/*" }}

生成 ConfigMap

一种经典用法是构建一个 ConfigMap,其中数据键是文件名,值是文件内容。

AsConfig 快捷方式

对于这种情况,AsConfig 可以将 Glob 结果直接转换为可用于 ConfigMap 的数据块。

data: {{ (.Files.Glob "configs/*").AsConfig | nindent 2 }}

使用 AsSecrets 处理 Secret

它的同类函数 AsSecrets 会对每个文件进行 Base64 编码,因此 Glob 结果可以改为填充 Secret 资源。

data: {{ (.Files.Glob "secret/*").AsSecrets | nindent 2 }}

使用基础名称

在循环中,您通常只需要将文件名作为键,因此可以应用 base 函数来去除目录部分。

{{ base $path }}: |

读取每个文件的内容

循环变量是原始字节,因此请将它通过 toString 或 nindent 传递,以便将内容整齐地放置在对应的键下。

{{ $content | toString | nindent 4 }}

Glob 模式是相对的

Glob 模式以 Chart 根目录为起点解析,并且会跳过点文件,因此请将打包的资源放在名称清晰的文件夹中。

保持输出有效

缩进很重要:请对每个数据块使用 nindent,确保生成的键和值内容正确嵌套在 data 下。

读取单个文件

如果您只需要一个文件而不是一组文件,.Files.Get 会直接返回其内容,完全不需要循环。

{{ .Files.Get "configs/app.conf" }}

快速检查

快速检查文件 Glob 匹配。

回顾

您已学会使用 .Files.Glob 选择打包的文件,使用 range 遍历它们,并通过 AsConfig 或 AsSecrets 生成 ConfigMap。🎉

常见问题解答

「使用 range 遍历 .Files.Glob 中的文件」课时是免费的吗?

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

「使用 range 遍历 .Files.Glob 中的文件」这节课中我会学到什么?

从文件目录生成 ConfigMaps 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

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

「使用 range 遍历 .Files.Glob 中的文件」课时需要多长时间?

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

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

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

此课程中的所有课时

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