Files
helm_chart/description/README.md

130 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chart 说明
## 文件结构
chart是一个组织在文件目录中的集合。目录名称就是chart名称没有版本信息
``` bash
chart/
Chart.yaml # 包含了chart信息的YAML文件
LICENSE # 可选: 包含chart许可证的纯文本文件
README.md # 可选: 可读的README文件
values.yaml # chart 默认的配置值
values.schema.json # 可选: 一个使用JSON结构的values.yaml文件
charts/ # 包含chart依赖的其他chart
crds/ # 自定义资源的定义
templates/ # 模板目录, 当和values 结合时可生成有效的Kubernetes manifest文件
templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件
```
<br/>
## Chart.yaml
Chart.yaml文件是chart必需的。包含了以下字段
``` yaml
apiVersion: chart API 版本 (必需)
name: chart名称 (必需)
version: 语义化2 版本(必需)
kubeVersion: 兼容Kubernetes版本的语义化版本可选
description: 一句话对这个项目的描述(可选)
type: chart类型 (可选)
keywords:
- 关于项目的一组关键字(可选)
home: 项目home页面的URL (可选)
sources:
- 项目源码的URL列表可选
dependencies: # chart 必要条件列表 (可选)
- name: chart名称 (nginx)
version: chart版本 ("1.2.3")
repository: 可选仓库URL ("https://example.com/charts") 或别名 ("@repo-name")
condition: (可选) 解析为布尔值的yaml路径用于启用/禁用chart (e.g. subchart1.enabled )
tags: # (可选)
- 用于一次启用/禁用 一组chart的tag
import-values: # (可选)
- ImportValue 保存源值到导入父键的映射。每项可以是字符串或者一对子/父列表项
alias: (可选) chart中使用的别名。当你要多次添加相同的chart时会很有用
maintainers: # (可选)
- name: 维护者名字 (每个维护者都需要)
email: 维护者邮箱 (每个维护者可选)
url: 维护者URL (每个维护者可选)
icon: 用做icon的SVG或PNG图片URL (可选)
appVersion: 包含的应用版本(可选)。不需要是语义化,建议使用引号
deprecated: 不被推荐的chart (可选,布尔值)
annotations:
example: 按名称输入的批注列表 (可选).
```
<br/>
## values.yaml
### 预定义的 Values
Values通过模板中.Values对象可访问的values.yaml文件或者通过 --set 参数)提供, 但可以模板中访问其他预定义的数据片段。
以下值是预定义的,对每个模板都有效,并且可以被覆盖。和所有值一样,名称 区分大小写。
- `Release.Name` : 版本名称(非chart的)
- `Release.Namespace` : 发布的chart版本的命名空间
- `Release.Service` : 组织版本的服务
- `Release.IsUpgrade` : 如果当前操作是升级或回滚设置为true
- `Release.IsInstall` : 如果当前操作是安装设置为true
- `Chart` : Chart.yaml的内容。因此chart的版本可以从 Chart.Version 获得, 并且维护者在Chart.Maintainers里。
- `Files` : chart中的包含了非特殊文件的类图对象。这将不允许您访问模板 但是可以访问现有的其他文件(除非被.helmignore排除在外。 使用{{ index .Files "file.name" }}可以访问文件或者使用{{.Files.Get name }}功能。 您也可以使用{{ .Files.GetBytes }}作为[]byte访问文件内容。
- `Capabilities` : 包含了Kubernetes版本信息的类图对象。({{ .Capabilities.KubeVersion }}) 和支持的Kubernetes API 版本({{ .Capabilities.APIVersions.Has "batch/v1" }})
注意: 任何未知的Chart.yaml字段会被抛弃。在Chart对象中无法访问。因此 Chart.yaml不能用于将任意结构的数据传递到模板中。不过values文件可用于此。
<br/>
## Values文件
考虑到后面部分的模板values.yaml文件提供的必要值如下
``` yaml
imageRegistry: "quay.io/deis"
dockerTag: "latest"
pullPolicy: "Always"
storage: "s3"
```
<br/>
## Templates 模板文件
模板文件遵守书写Go模板的标准惯例查看 文本/模板 Go 包文档了解更多)。 模板文件的例子看起来像这样:
``` yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: deis-database
namespace: deis
labels:
app.kubernetes.io/managed-by: deis
spec:
replicas: 1
selector:
app.kubernetes.io/name: deis-database
template:
metadata:
labels:
app.kubernetes.io/name: deis-database
spec:
serviceAccount: deis-database
containers:
- name: deis-database
image: {{ .Values.imageRegistry }}/postgres:{{ .Values.dockerTag }}
imagePullPolicy: {{ .Values.pullPolicy }}
ports:
- containerPort: 5432
env:
- name: DATABASE_STORAGE
value: {{ default "minio" .Values.storage }}
```
# 参考资料
- [官方文档 *https://helm.sh/zh/docs/topics/charts*](https://helm.sh/zh/docs/topics/charts)