使用 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 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 mergeOverwrite 和 dict 进行深度合并
- tpl:从 Values 渲染字符串
- 使用 range 遍历 .Files.Glob 中的文件
- fail 与自定义验证保护