
jnorwood/helm-docshelm-docs是一个从Helm图表自动生成Markdown文档的工具。生成的文档包含图表元数据以及所有图表值的表格,包括默认值和从注释中解析的可选描述。文档生成完全由gotemplate驱动,工具会解析图表元数据并生成多个子模板,可在模板文件(默认README.md.gotmpl)中引用。若未提供模板文件,工具将使用默认内部模板生成格式合理的README。
Chart.yaml和values.yaml提取信息,生成结构化Markdown文档README.md.gotmpl).helmdocsignore文件,用于排除不需要处理的图表目录values.yaml配置保持同步bashbrew install norwoodj/tap/helm-docs
此命令将下载并安装工具的最新版本。
bashcd cmd/helm-docs go build
在目录中或递归地为所有Helm图表生成文档并输出到README:
bashhelm-docs # 或 helm-docs --dry-run # 将生成的文档打印到stdout而非修改README
工具会递归搜索当前目录的子目录中的Chart.yaml文件,并为找到的每个图表生成文档。
工具生成的模板如下,可在README.md.gotmpl文件中通过{{ template "template-name" . }}引用:
| 名称 | 描述 |
|---|---|
| chart.header | 生成的Markdown文件的主标题 |
| chart.description | 包含图表Chart.yaml中description字段的描述行,若未设置则为空 |
| chart.version | 图表Chart.yaml中的version字段 |
| chart.versionLine | 说明图表当前版本的文本行 |
| chart.type | 图表Chart.yaml中的type字段 |
| chart.typeLine | 说明图表当前类型的文本行 |
| chart.sourceLink | 图表Chart.yaml中的home链接,若未设置则为空 |
| chart.sourceLinkLine | 包含图表Chart.yaml中home链接的文本行,若未设置则为空 |
| chart.requirementsHeader | 图表依赖部分的标题 |
| chart.requirementsTable | 图表所需子图表的表格 |
| chart.requirementsSection | 包含requirementsTable的依赖部分(若无可依赖项则为空) |
| chart.valuesHeader | 图表值部分的标题 |
| chart.valuesTable | 从values.yaml解析的图表值表格 |
| chart.valuesSection | 包含valuesTable的值部分(若无可值则为空) |
若不存在README.md.gotmpl(或其他指定的模板文件),将使用默认模板生成README:
{{ template "chart.header" . }} {{ template "chart.description" . }} {{ template "chart.versionLine" . }} {{ template "chart.sourceLinkLine" . }} {{ template "chart.requirementsSection" . }} {{ template "chart.valuesSection" . }}
helm-docs支持.helmdocsignore文件(类似.gitignore),可指定搜索图表时要忽略的目录。被指定的目录无需是图表本身,因此包含多个图表的父目录可被忽略,其下所有图表均不处理。也可直接引用Chart.yaml文件以跳过特定图表。
工具可从values.yaml文件解析值的描述和默认值。默认值直接从YAML中提取,描述可通过特定格式的注释添加。
在文件中通过以下格式的注释为参数添加描述:
yamlcontroller: publishService: # controller.publishService.enabled -- 是否将ingress控制器暴露给公网 enabled: false # controller.replicas -- 负载均衡的nginx-ingress pod数量。 # 不要设置为小于2的值。 replicas: 2
注释可跨多行,后续行无需双破折号,将自动以空格连接。
int、string、float、bool、空列表和空映射的字段)到值表,即使它们没有描述注释示例:
yamlcontroller: # controller.livenessProbe -- 配置ingress控制器的健康检查 livenessProbe: httpGet: # controller.livenessProbe.httpGet.path -- 健康检查端点 path: /healthz port: http
生成的值表:
| Key | Type | Default | Description |
|---|---|---|---|
| controller.livenessProbe | object | {"httpGet":{"path":"/healthz","port":8080}} | 配置ingress控制器的健康检查 |
| controller.livenessProbe.httpGet.path | string | "/healthz" | 健康检查端点 |
若移除controller.livenessProbe的注释:
yamlcontroller: livenessProbe: httpGet: # controller.livenessProbe.httpGet.path -- 健康检查端点 path: /healthz port: http
生成的值表:
| Key | Type | Default | Description |
|---|---|---|---|
| controller.livenessProbe.httpGet.path | string | "/healthz" | 健康检查端点 |
| controller.livenessProbe.httpGet.port | string | "http" |
若需定义键但保留默认值为空,可指定描述和类型:
yamlcontroller: # controller.replicas -- (int) 负载均衡的nginx-ingress pod数量 replicas:
若不想使用values.yaml中的默认值,或实际默认值在图表内部计算,可通过@default注释修改默认值列:
yamlservice: # service.annotations -- 为服务添加注释 # @default -- 图表将自动添加一些内部注释 annotations: []
注意:键的注释必须在第一行,@default注释需紧随其后。
若键名包含.或空格,注释中需将该部分用引号括起:
yamlservice: annotations: # service.annotations."external-dns.alpha.kubernetes.io/hostname" -- 分配给服务ELB的主机名 external-dns.alpha.kubernetes.io/hostname: stupidchess.jmn23.com configMap: # configMap."not real config param" -- 示例用的假配置参数 not real config param: value
若要通过pre-commit钩子自动生成README.md文件,需先安装pre-commit二进制文件,并在项目中添加.pre-commit-config.yaml文件,然后运行:
bashpre-commit install pre-commit install-hooks
之后,对图表的requirements.yaml、values.yaml或Chart.yaml文件的修改将在提交时触发文档更新。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务