1、概述
在Kubernetes的世界里,Helm作为一个包管理器,为我们提供了部署、管理和升级应用程序的便利。通过Helm,我们可以创建可复用的图表(Charts),这些图表描述了Kubernetes资源的配置和依赖关系。本文将引导您了解Helm Chart的基础结构,并介绍如何从零开始创建一个Helm Chart。
2、Chart目录结构与说明
首先,让我们来看看Helm Chart的典型目录结构:
.
├── charts/
├── Chart.yaml
├── templates/
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests/
│       └── test-connection.yaml
└── values.yaml
每个文件和目录都有其特定的目的:
- 
charts/:这个目录包含了所有的chart依赖项。这些依赖可以以chart源码的形式存在,也可以通过在Chart.yaml中定义从chart仓库下载。 - 
Chart.yaml:这是主要的chart配置文件,包含了项目的元数据,如描述、版本、维护者信息以及依赖关系等。 - 
templates/:这个目录包含了所有用Kubernetes manifest定义的资源文件模板。Helm会在部署时处理这些模板,并替换values.yaml文件中的值,生成最终的Kubernetes资源清单文件。- 
deployment.yaml:定义了一个Kubernetes部署的配置模板。 - 
_helpers.tpl:存储了可以在其他模板文件中复用的模板函数。 - 
hpa.yaml:定义了一个Horizontal Pod Autoscaler(水平Pod自动伸缩器)的配置模板。 - 
ingress.yaml:定义了一个Ingress资源的配置模板,用于控制外部访问Kubernetes服务的路由规则。 - 
service.yaml:定义了一个Kubernetes服务的配置模板,用于暴露Pod的网络访问。 - 
serviceaccount.yaml:定义了一个Kubernetes服务账户的配置模板,用于管理Pod的权限。 - 
NOTES.txt:这个文件包含了关于如何访问或使用部署后的应用程序的说明,Helm在部署chart后会显示这些信息给用户。 - 
tests/目录下的test-connection.yaml:这是一个用于测试的YAML文件模板,可以用来验证部署的应用程序是否能够正确连接。 
 - 
 - 
values.yaml:这个文件包含了所有可配置的参数及其默认值。这些值可以在执行helm install或helm upgrade命令时被用户覆盖,从而实现定制化的部署。 
3、创建Helm Chart
现在,让我们来创建一个新的Helm Chart。首先,确保您已经安装了Helm工具。然后,在命令行中执行以下命令:
helm create {chart name}
请将{chart name}替换为您想要创建的Chart的名称。例如,如果您想要创建一个名为base的Chart,则应该执行:
helm create base
执行完上述命令后,Helm会为您生成一个完整的Chart目录结构,包含上述所有文件和目录。接下来,您可以根据您的应用程序需求来编辑这些文件,定义资源、配置和依赖关系。
4、编辑Chart文件
在创建Chart后,您需要编辑Chart.yaml、values.yaml和templates/目录下的文件来定义您的Kubernetes资源。
- 在
Chart.yaml中,填写您的Chart的元数据,如名称、版本、描述等。 - 在
values.yaml中,定义您的应用程序配置参数的默认值。 - 在
templates/目录下,创建和编辑Kubernetes资源的YAML模板文件。这些模板文件会使用Go模板语法,并引用values.yaml中定义的参数。 
5、测试与部署
在编辑完Chart文件后,您可以使用Helm的lint命令来检查Chart的语法和格式是否正确:
helm lint {chart name}
如果lint检查没有问题,您就可以使用helm install命令来部署您的Chart了:
helm install [RELEASE_NAME] {chart name}
其中[RELEASE_NAME]是您想要给这次部署的实例起的名字,可以是任何您喜欢的字符串。如果不提供[RELEASE_NAME],Helm会自动生成一个。
6、总结
通过本文,你应该已经了解了Helm Chart的基本结构,以及如何使用Helm工具创建一个新的Chart。Helm Chart提供了一种可复用的方式来定义、打包和部署Kubernetes应用程序,使得Kubernetes的部署和管理变得更加简单和高效。