新闻详情

新闻详情

首页 / 资讯中心 / 详情

深入解析 Helm 的 `helm create` 示例图表:以 alpine 测试图表为例

发布时间:2026/9/20 1:07:35来源:尧图网络
深入解析 Helm 的 `helm create` 示例图表:以 alpine 测试图表为例
深入解析 Helm 的helm create示例图表以 alpine 测试图表为例【免费下载链接】helmThe Kubernetes Package Manager项目地址: https://gitcode.com/GitHub_Trending/hel/helm本篇指南围绕 Helm 仓库 internal/chart/v3/loader/testdata/frobnitz_with_bom/charts/alpine/README.md 这一示例文档展开它以一段由helm create alpine生成的极简图表为标本完整展示了一个 Helm Chart 的目录结构、模板语法、默认值机制与安装流程。读完本文你将掌握 Helm 图表的标准骨架Chart.yaml、templates/、values.yaml、内置模板对象与default函数的实战用法以及子图表在目录中的组织方式并能独立读懂、修改与安装一个基础 Helm 图表。一、示例文档的核心内容一个由helm create生成的图表被指定的 README 文档虽然篇幅简短却精确描述了一个真实存在、可运行的 Helm 示例图表。其原文要点如下该示例由命令helm create alpine生成templates/目录中包含一个带少量参数的极简 Pod 资源values 文件保存着alpine-pod.yaml模板所需的默认值可通过helm install ./alpine安装此示例。这四条要点分别对应 Helm 图表生命周期中的创建—结构—参数化—部署四个环节下文将结合仓库中该图表的真实文件逐一展开验证与深化。二、图表目录结构helm create的标准骨架在仓库中该 alpine 图表的完整目录如下以 frobnitz_with_bom/charts/alpine 为根alpine/ ├── charts/ │ ├── mast1/ # 子图表含自身 Chart.yaml 与 values.yaml │ └── mast2-0.1.0.tgz # 打包为 .tgz 的子图表 ├── templates/ │ └── alpine-pod.yaml # 模板化的 Pod 资源 ├── Chart.yaml # 图表元数据 ├── README.md # 示例说明本文关联文档 └── values.yaml # 默认值文件这一结构正是helm create的标准产出Chart.yaml声明元数据templates/存放以 Go 模板书写的 Kubernetes 资源values.yaml提供可覆盖的默认参数charts/目录则用于收纳依赖的子图表可以是解压后的目录也可以是打包好的.tgz文件本示例两种形式并存。三、Chart.yaml图表的元数据声明图表根目录下的 Chart.yaml 内容如下apiVersion: v3 name: alpine description: Deploy a basic Alpine Linux pod version: 0.1.0 home: https://helm.sh/helm各字段含义apiVersionChart API 版本。v3表示这是一个 Helm 3 及以上的图表与仓库中pkg/chart模块的 v3 实现对应即 internal/chart/v3 所解析的格式name图表名称同时会成为模板中{{.Chart.Name}}的值description图表的简要说明version图表版本号遵循语义化版本规范会用于helm.sh/chart标签与打包产物命名home项目主页地址。值得注意README 文档中提到的 values.toml 在仓库中的实际文件名是values.yaml——这是示例文档的一处笔误Helm 官方约定以及仓库 values.yaml采用的都是 YAML 格式。四、模板文件解析一个带参数的最小 Podtemplates/目录下的 alpine-pod.yaml 是整个图表的灵魂它演示了 Helm 模板的核心语法apiVersion: v1 kind: Pod metadata: name: {{.Release.Name}}-{{.Chart.Name}} labels: app.kubernetes.io/managed-by: {{.Release.Service}} app.kubernetes.io/name: {{.Chart.Name}} helm.sh/chart: {{.Chart.Name}}-{{.Chart.Version}} spec: restartPolicy: {{default Never .restart_policy}} containers: - name: waiter image: alpine:3.9 command: [/bin/sleep,9000]这份模板集中展示了 Helm 模板引擎实现于 pkg/engine/engine.go的几类核心能力内置对象访问{{.Release.Name}}、{{.Chart.Name}}、{{.Chart.Version}}、{{.Release.Service}}分别引用 Helm 注入的 Release 与 Chart 内置对象。Release.Name是安装时指定的 release 名称Release.Service默认为HelmChart.Name/Chart.Version来自 Chart.yaml。它们共同决定了资源的最终命名与标签例如该 Pod 会被命名为release名-alpine。default函数兜底{{default Never .restart_policy}}是 Helm 模板中最常用的模式之一——当values.yaml中未定义restart_policy键时模板引擎会回退到默认值Never保证渲染结果始终有合法取值。这一函数在 pkg/engine/funcs.go 中有对应实现。模板与默认值分离模板文件本身不写死所有参数而是通过 values 文件注入。name: my-alpine定义在 values.yaml 中——不过当前模板只引用了restart_policy未定义时走默认分支name键作为预留参数存在体现了模板引用、values 赋值、default 兜底的三层解耦思想。五、values 默认值机制与覆盖方式values.yaml 文件非常简洁# The pod name name: my-alpine这符合helm create生成图表的惯例values 文件只声明少量注释良好的默认键。Helm 在渲染时会按命令行--set 用户传入的 values 文件 图表内置 values.yaml的优先级合并取值合并逻辑见 pkg/chart/common/util/coalesce.go。安装时可通过--set或-f覆盖默认值例如helm install ./alpine --set restart_policyOnFailure六、子图表依赖的组织方式该图表的charts/目录展示了 Helm 依赖的两种存放形态目录形式mast1/是解压后的子图表其 Chart.yaml 声明name: mast1、version: 0.1.0values.yaml 则是一份空模板式的默认值文件仅含注释未声明任何键是helm create生成子图表时的标准形态压缩包形式mast2-0.1.0.tgz是打包好的依赖与仓库 loader 测试目录frobnitz_with_bom/charts中同时出现_ignore_me文件与mariner-4.3.2.tgz的做法一致用于验证 loader 对多种文件类型的兼容处理。子图表的名称解析遵循name-version.tgz约定这正是helm package与helm dependency相关代码参见 pkg/chart/loader/archive/archive.go所依赖的命名规范。七、安装运行一条命令部署按示例文档说明进入图表目录的上一级后即可安装helm install ./alpine在 Helm 3 中install命令一般要求显式提供 release 名称因此更常见的写法是helm install my-alpine ./alpine # 或使用自动生成名称 helm install --generate-name ./alpine安装后可通过helm get manifest my-alpine查看渲染后的最终 YAML验证模板对象如 release 名称是否正确注入。八、从源码验证该图表在 loader 测试中的角色这个 alpine 示例图表并非孤立存在它位于frobnitz_with_bom带 BOM 的 frobnitz测试数据目录中是 Helm 图表加载器loader的测试样本。在 internal/chart/v3/loader/load_test.go 中可以看到对frobnitz_with_bom系列测试数据的明确引用测试通过读取frobnitz_with_bom.tgz逐文件校验其内容是否以 UTF-8 BOMutf8bom开头从而验证 loader 对带 BOM 文件含Chart.yaml、templates/template.tpl、.helmignore等的兼容能力同文件中的Loader(testdata/frobnitz_with_bom)与Loader(testdata/frobnitz_with_bom.tgz)两处调用则分别覆盖目录加载与归档加载两条路径。生成该测试数据的脚本位于 internal/chart/v3/loader/testdata/genfrob.sh。这意味着本文剖析的 alpine 示例图表同时承担着新手学习模板语法与验证 loader 兼容性的双重角色——它在仓库中的存在本身就证明了 Helm 对 BOM 文件、子图表目录/压缩包混合结构的真实支持能力。九、小结通过一个由helm create alpine生成的极简示例本文完整走通了 Helm 图表的结构—元数据—模板—默认值—依赖—安装全链路环节对应文件核心知识结构alpine/ 目录Chart.yaml、templates/、values.yaml、charts/ 四要素元数据Chart.yamlapiVersion: v3与图表命名/版本约定模板alpine-pod.yaml内置对象、default函数默认值values.yaml默认值声明与覆盖优先级依赖charts/mast1子图表的目录与 tgz 两种形态安装helm installrelease 名称与--generate-name这份示例文档及配套文件既是初学者理解 Helm 图表工作原理的最佳入口也是 Helm 自身 loader 测试体系的重要样本——读懂它就等于掌握了 Helm 图表开发的最小完备知识集。【免费下载链接】helmThe Kubernetes Package Manager项目地址: https://gitcode.com/GitHub_Trending/hel/helm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

2026来宾电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐 2026/9/20 1:05:23

2026来宾电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

来宾本地从事电气防爆检测的机构数量众多,可谓鳞次栉比、鱼龙混杂。化工园区、油库加油站、矿山厂区、制药企业以及危化品仓储场所,在开展防爆电气安全排查与生产验收时,大量无资质机构出具的检测报告往往无法通过应急管理部门的严格核查&…

阅读更多 →
Python通过缩进来组织代码块,这是与其他语言(如C、Java)最大的不同。真题中常出现因缩进错误导致的`IndentationError`,或者考察`if-else`、`for`循环的嵌套逻辑 2026/9/20 1:05:23

Python通过缩进来组织代码块,这是与其他语言(如C、Java)最大的不同。真题中常出现因缩进错误导致的`IndentationError`,或者考察`if-else`、`for`循环的嵌套逻辑

随着计算机技术的普及,Python语言凭借其简洁的语法和强大的功能,已成为全国计算机等级考试(NCRE)二级中的热门科目。对于备考二级Python语言程序设计而言,单纯死记硬背语法往往难以应对灵活多变的真题环境。通过“真题…

阅读更多 →
AI编程实战:从工具选型到提示词技巧,打造高效开发工作流 2026/9/20 1:05:23

AI编程实战:从工具选型到提示词技巧,打造高效开发工作流

前两年我还在为写一个数据处理的脚本折腾到半夜,现在每天打开编辑器,第一件事是把我手头的半成品丢给AI,让它先跑通一个可用的版本,我再来改。说句实在话,AI编程这件事已经彻底改变了我个人做项目的方式。它不再只是“…

阅读更多 →
Gatsby 使用 Markdown 文件创建页面:从文件系统采集到 File System Route API 的完整实战指南 2026/9/20 1:05:23

Gatsby 使用 Markdown 文件创建页面:从文件系统采集到 File System Route API 的完整实战指南

Gatsby 使用 Markdown 文件创建页面:从文件系统采集到 File System Route API 的完整实战指南 【免费下载链接】gatsby React-based framework with performance, scalability, and security built in. 项目地址: https://gitcode.com/gh_mirrors/ga/gatsby …

阅读更多 →
PyPTO 逐元素加法算子 `pypto_pro.language.add` 完全指南:Tile-Tile 与 Tile-Scalar 双模式实战 2026/9/20 1:05:23

PyPTO 逐元素加法算子 `pypto_pro.language.add` 完全指南:Tile-Tile 与 Tile-Scalar 双模式实战

PyPTO 逐元素加法算子 pypto_pro.language.add 完全指南:Tile-Tile 与 Tile-Scalar 双模式实战 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/…

阅读更多 →
用WorkBuddy搭建AI Agent投研团队:从情报收集到风控的全流程自动化 2026/9/20 1:02:23

用WorkBuddy搭建AI Agent投研团队:从情报收集到风控的全流程自动化

开篇先交代一下背景。去年我有段时间同时在跟踪七八只票,白天要看盘、晚上要翻公告、周末还要把各家财报和行业数据拉出来对比,整个人被信息流冲得有点扛不住。最开始我的方案很简单——把资料丢给通用大模型,让它帮我读公告、列重点、做对比…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞