引言

在Kubernetes(K8s)生态系统中,Helm 是一款流行的包管理工具,而 Helm Chart 则是用于描述和定义 K8s 应用程序的模板。本文将深入讨论 Helm Chart 的语法,包括 Chart 的结构、模板文件、函数、变量等方面,同时提供详细的示例演示如何使用 Helm Chart 创建和定制 K8s 应用程序。

Helm Chart 结构

一个 Helm Chart 通常由一组文件和目录组成,其中包含了定义 K8s 应用程序所需的所有信息。以下是一个标准 Helm Chart 的基本结构:
mychart/
|— Chart.yaml
|— values.yaml
|— charts/
|— templates/
| |— deployment.yaml
| |— service.yaml
|— …

  • Chart.yaml: Chart 的元数据文件,包含 Chart 的名称、版本、描述等信息。
  • values.yaml: 默认的配置值文件,用于定义 Chart 的默认配置。
  • charts/: 用于存放依赖的子 Charts。
  • templates/: 包含 K8s 资源的模板文件,如 Deployment、Service 等。

values.yaml 文件

values.yaml 文件用于定义 Chart 的默认配置值,以下是一个简单的示例:

values.yaml

1
2
3
4
5
6
7
8
9
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
service:
name: my-service
type: ClusterIP
port: 80

在模板文件中,可以使用这些配置值,例如:

templates/deployment.yaml

1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: my-container
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

模板文件

模板文件位于 templates 目录下,其中包含了 K8s 资源的 YAML 文件,使用 Go 的模板语法进行参数替换。以下是一个简单的 Deployment 模板文件示例:

相关文章