jnorwood/helm-docs.
If no template file is provided, the tool has a default internal template that will generate a reasonably formatted README.
helm-docs can be installed using homebrew:
brew install norwoodj/tap/helm-docs
This will download and install the latest release of the tool.
To build from source in this repository:
cd cmd/helm-docs go build
To run and generate documentation into READMEs for all helm charts within or recursively contained by a directory:
bashhelm-docs # OR helm-docs --dry-run # prints generated documentation to stdout rather than modifying READMEs
The tool searches recursively through subdirectories of the current directory for Chart.yaml files and generates documentation
for every chart that it finds.
The templates generated by the tool are shown below, and can be included in your README.md.gotmpl file like so:
{{ template "template-name" . }}
| Name | Description |
|---|---|
| chart.header | The main heading of the generated markdown file |
| chart.description | A description line containing the description field from the chart's Chart.yaml file, or "" if that field is not set |
| chart.version | The version field from the chart's Chart.yaml file |
| chart.versionLine | A text line stating the current version of the chart |
| chart.type | The type field from the chart's Chart.yaml file |
| chart.typeLine | A text line stating the current type of the chart |
| chart.sourceLink | The home link from the chart's Chart.yaml file, or "" if that field is not set |
| chart.sourceLinkLine | A text line with the home link from the chart's Chart.yaml file, or "" if that field is not set |
| chart.requirementsHeader | The heading for the chart requirements section |
| chart.requirementsTable | A table of the chart's required sub-charts |
| chart.requirementsSection | A section headed by the requirementsHeader from above containing the requirementsTable from above or "" if there are no requirements |
| chart.valuesHeader | The heading for the chart values section |
| chart.valuesTable | A table of the chart's values parsed from the values.yaml file (see below) |
| chart.valuesSection | A section headed by the valuesHeader from above containing the valuesTable from above or "" if there are no values |
For an example of how these various templates can be used in a README.md.gotmpl file to generate a reasonable markdown file,
look at the charts in example-charts.
If there is no README.md.gotmpl (or other specified gotmpl file) present, the default template is used to generate the README.
That template looks like so:
{{ template "chart.header" . }} {{ template "chart.description" . }} {{ template "chart.versionLine" . }} {{ template "chart.sourceLinkLine" . }} {{ template "chart.requirementsSection" . }} {{ template "chart.valuesSection" . }}
The tool includes the sprig templating library, so those functions can be used in the templates you supply.
helm-docs supports a .helmdocsignore file, exactly like a .gitignore file in which one can specify directories to ignore
when searching for charts. Directories specified need not be charts themselves, so parent directories containing potentially
many charts can be ignored and none of the charts underneath them will be processed. You may also directly reference the
Chart.yaml file for a chart to skip processing for it.
This tool can parse descriptions and defaults of values from values.yaml files. The defaults are pulled directly from
the yaml in the file. Descriptions can be added for parameters by specifying the full path of the value and
a particular comment format. I invite you to check out the example-charts to see how this is done in
practice. In order to add a description for a parameter you need only put a comment somewhere in the file of the format:
yamlcontroller: publishService: # controller.publishService.enabled -- Whether to expose the ingress controller to the public world enabled: false # controller.replicas -- Number of nginx-ingress pods to load balance between. # Do not set this below 2. replicas: 2
Note that comments can continue on the next line. In that case leave out the double dash, and the lines will simply be appended with a space in-between.
The following rules are used to determine which values will be added to the values table in the README:
int, string, float, bool, empty lists, and empty maps
are added as rows in the values table. These fields will be added even if they do not have a description commente.g. In this case, both controller.livenessProbe and controller.livenessProbe.httpGet.path will be added as rows in
the values table, but controller.livenessProbe.httpGet.port will not
yamlcontroller: # controller.livenessProbe -- Configure the healthcheck for the ingress controller livenessProbe: httpGet: # controller.livenessProbe.httpGet.path -- This is the liveness check endpoint path: /healthz port: http
Results in:
| Key | Type | Default | Description |
|---|---|---|---|
| controller.livenessProbe | object | {"httpGet":{"path":"/healthz","port":8080}} | Configure the healthcheck for the ingress controller |
| controller.livenessProbe.httpGet.path | string | "/healthz" | This is the liveness check endpoint |
If we remove the comment for controller.livenessProbe however, both leaf nodes controller.livenessProbe.httpGet.path
and controller.livenessProbe.httpGet.port will be added to the table, with our without description comments:
yamlcontroller: livenessProbe: httpGet: # controller.livenessProbe.httpGet.path -- This is the liveness check endpoint path: /healthz port: http
Results in:
| Key | Type | Default | Description |
|---|---|---|---|
| controller.livenessProbe.httpGet.path | string | "/healthz" | This is the liveness check endpoint |
| controller.livenessProbe.httpGet.port | string | "http" |
If you would like to define a key for a value, but leave the default empty, you can still specify a description for it as well as a type. Like so:
yamlcontroller: # controller.replicas -- (int) Number of nginx-ingress pods to load balance between replicas:
This could be useful when wanting to enforce user-defined values for the chart, where there are no sensible defaults.
In cases where you do not want to include the default value from values.yaml, or where the real default is calculated
inside the chart, you can change the contents of the column like so:
yamlservice: # service.annotations -- Add annotations to the service # @default -- the chart will add some internal annotations automatically annotations: []
The order is important. The name must be spelled just like the column heading. The first comment must be the one specifying the key. The "@default" comment must follow.
See here for an example.
If a key name contains any "." or " " characters, that section of the path must be quoted in description comments e.g.
yamlservice: annotations: # service.annotations."external-dns.alpha.kubernetes.io/hostname" -- Hostname to be assigned to the ELB for the service external-dns.alpha.kubernetes.io/hostname: stupidchess.jmn23.com configMap: # configMap."not real config param" -- A completely fake config parameter for a useful example not real config param: value
If you want to automatically generate README.md files with a pre-commit hook, make sure you
install the pre-commit binary, and add a .pre-commit-config.yaml file
to your project. Then run:
bashpre-commit install pre-commit install-hooks
Future changes to your charts requirements.yaml, values.yaml, or Chart.yaml files will cause an update to documentation when you commit.
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务