告别手写,一键生成 Helm Chart README

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: helm-docs 可以根据 charts 内容自动生成 markdown 文件。

前言

随着云原生应用的普及,Helm 的作用也日益凸显,越来越多的云原生应用以 Helm Chart 的形式发布,可以说现在如果没有一个 Helm Chart 都不好意思说自己是云原生应用。

一个好的应用必定有一套好的文档,文档的质量往往和代码的质量成正比。而 Helm Chart 中的 README.md 文件就承担了文档的作用,该文件会介绍这个 Helm Chart 的基本信息、使用方式以及参数配置等,用户可以通过该文档的指引,配置符合自己需求的参数,最终完成云原生应用的部署。

但这也给云原生应用的开发者提出了挑战,开发者不但需要把 value.yamlChart.yaml 等文件的参数以 Markdown 的形式搬运到 README.md 文件中,同时还要将参数的默认值,以及介绍填入表格中。但如果参数出现了变动,往往无法及时更新文档。这就导致了用户明明根据文档配置了参数,但是部署的效果就是无法达到预期。

Helm-docs

helm-docs 可以根据 charts 内容自动生成 markdown 文件。该文件会包含有关 charts 的元数据,以及 value.yaml 中的参数,同时还可以引用子模板(默认为 README.md.gotmpl),进一步定制生成的内容。

安装

helm-docs 使用 golang 开发,支持多平台:

MacOS

可以使用 homebrew 安装:

brew install norwoodj/tap/helm-docs

下载可执行文件

release 页面下载对应平台的可执行文件。

快速开始

直接使用可执行文件

使用方法也很简单,直接进入到 Chart 所在目录,执行命令:

helm-docs
# 或者
helm-docs --dry-run # 不生成 README.md 文件,而是将生成的内容打印到控制台

使用 docker

如果不想安装可执行文件,也可以使用 docker,将 Chart 目录挂载到 docker 镜像中,实现相同的效果:

docker run -v "$(pwd):/helm-docs" jnorwood/helm-docs:latest
# 或者
docker run -v "$(pwd):/helm-docs" jnorwood/helm-docs:latest --dry-run

进阶实践

下面就以我的开源项目 cms-grafana-builder 为例,讲解 helm-docs 的一些进阶使用。

添加参数说明

helm-docs 可以通过 value.yaml 中的注释生成参数说明,注释格式如下所示,-- 后的内容会自动填充到 Chart Values 的 Description 中:

# access_key_id -- Aliyun Access Key Id.
access_key_id: ""
# access_secret -- Aliyun Access Secret.
access_secret: ""
# region_id -- Aliyun Region Id.
region_id: "cn-shanghai"
# password -- Grafana admin password.
password: "admin"

image:
  # image.repository -- Image source repository name.
  repository: grafana/grafana
  # image.pullPolicy -- Image pull policy.
  pullPolicy: IfNotPresent

自定义模板

可以新建 README.md.gotmpl 模板来进一步定制 README.md 的输出样式。

README.md.gotmpl 文件的内容如下,可以在模板中插入 Markdown 来充实 README.md 的内容,以及改变展示内容的顺序:

{{ template "chart.header" . }}
{{ template "chart.description" . }}

{{ template "chart.versionLine" . }}

{{ template "chart.sourceLinkLine" . }}

## Introduction

This chart helps you run a grafana server that include aliyun cms dashboard.


{{ template "chart.requirementsSection" . }}

{{ template "chart.valuesSection" . }}

总结

helm-docs 可以帮助很多像我这样需要维护多个 Helm Chart 的开发者,在更新完或新建 Chart 以后,使用 helm-docs 来自动生成 README.md 文件,无需逐个寻找和修改,甚至将其集成到 CI 流水线中,自动生成最新的 README.md,保证文档和代码的一致。

更多内容和示例,详见 https://github.com/norwoodj/helm-docs

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
目录
相关文章
|
4月前
|
JavaScript 前端开发
🚀自定义属于你的脚手架并发布到NPM仓库
🚀自定义属于你的脚手架并发布到NPM仓库
|
2月前
|
开发工具 数据安全/隐私保护 git
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
140 0
|
域名解析 Kubernetes JavaScript
如何开发一个完整的Helm charts应用实例(1)
如何开发一个完整的Helm charts应用实例(1)
如何开发一个完整的Helm charts应用实例(1)
|
4月前
NPM 制作命令行工具 - 入门案例
NPM 制作命令行工具 - 入门案例
54 0
|
存储 Kubernetes 关系型数据库
事半功倍:Helm的了解与使用
事半功倍:Helm的了解与使用
200 0
|
Web App开发 存储 缓存
前端MonoRepo实战:pnpm+nx搭建MonoRepo项目
之前大多数是理论知识,能让我们知道pnpm 和nx 是什么,但是具体要到项目实战就有点懵,不知道从而下手,下面我们就一步步开始搭建pnpm+nx的Monorepo仓库。
1383 0
|
存储 Kubernetes Go
helm chart编写入门
helm chart编写入门
1964 0
|
存储 Kubernetes Linux
如何开发一个完整的Helm charts应用实例(2)
如何开发一个完整的Helm charts应用实例(2)
如何开发一个完整的Helm charts应用实例(2)
|
Kubernetes 应用服务中间件 Linux
helm实战之开发Chart
实战自定义Chart的开发
446 0
helm实战之开发Chart
|
Kubernetes Cloud Native 前端开发
如何从代码到制作并发布一个 Helm 包?
Helm 是什么?云原生领域应用打包和分发的事实标准,Helm Chart 通常包含 Docker 镜像及其基础设施配置,能够把一个 K8s 生态的应用完整封装,并且在另一个 K8s 环境正常的运行。为什么 Helm 会流行?核心功能有两点:对复杂的 Kubernetes YAML 做了打包和抽象,简化为少量参数。给出应用的概念,并给出了完整生命周期解决方案:制作、上传(托管)、版本化、分发、部署
如何从代码到制作并发布一个 Helm 包?