新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/10 13:39:56来源:尧图网络
深入解析 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/9/10 14:22:06

频散曲线求解程序开发与工程应用实践

1. 频散曲线求解程序的核心价值与应用场景在地球物理勘探、材料科学和声学工程领域,频散曲线分析是一项基础而关键的技术手段。这种描述波传播速度随频率变化的曲线,能够揭示介质内部的物理特性与结构特征。传统的手工计算方法不仅效率低下,而…

阅读更多 →
Python开发实战:从基础到工程化的全面指南 2026/9/10 14:22:06

Python开发实战:从基础到工程化的全面指南

1. Python软件基础认知框架 作为从C转战Python的老程序员,我经常被新手问到一个核心问题:"到底什么是Python软件?"这绝不仅仅是一个安装包那么简单。让我们从二进制可执行文件的本质说起——当你在命令行输入 python script.py 时…

阅读更多 →
gRPC Wait-for-Ready 语义深度解析:通道状态机、配置开关与实战验证 2026/9/10 14:22:06

gRPC Wait-for-Ready 语义深度解析:通道状态机、配置开关与实战验证

gRPC Wait-for-Ready 语义深度解析:通道状态机、配置开关与实战验证 【免费下载链接】grpc C based gRPC (C, Python, Ruby, Objective-C, PHP, C#) 项目地址: https://gitcode.com/GitHub_Trending/gr/grpc 导读 本文以 gRPC 仓库中的官方设计文档 doc/wai…

阅读更多 →
Deepin 25系统监控工具v2.5开发与优化指南 2026/9/10 14:22:06

Deepin 25系统监控工具v2.5开发与优化指南

1. 项目概述:系统监控桌面小工具 v2.5 for Deepin 25 最近在Deepin社区看到不少用户讨论系统资源监控的需求,特别是升级到Deepin 25后,原有的系统监视器功能无法满足个性化需求。作为一个长期使用Deepin的开发者,我决定将自用的系…

阅读更多 →
Debian系统编译安装FreeSWITCH 1.10.12全指南 2026/9/10 14:22:06

Debian系统编译安装FreeSWITCH 1.10.12全指南

1. FreeSWITCH 1.10.12 编译环境准备 在Debian最新稳定版系统上编译FreeSWITCH 1.10.12之前,需要确保基础编译环境和依赖库完整。我通常使用Debian 12 "Bookworm"作为基准环境,这是目前最稳定的发行版本。 1.1 系统基础配置 首先更新系统并安…

阅读更多 →
Storybook Addon 开发:使用 `setQueryParams` 删除 URL 查询参数 2026/9/10 14:19:06

Storybook Addon 开发:使用 `setQueryParams` 删除 URL 查询参数

Storybook Addon 开发:使用 setQueryParams 删除 URL 查询参数 【免费下载链接】storybook Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation 项目地址: https://gitcode.com/GitHub_Trending/st…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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