ahmetb/gen-crd-api-reference-docs

GitHub: ahmetb/gen-crd-api-reference-docs

一款基于 Go 源码自动生成 Kubernetes CRD API 参考文档的工具,无需依赖 OpenAPI 规范或运行中的集群。

Stars: 332 | Forks: 102

# Kubernetes Custom Resource API 参考文档生成器 如果你的项目提供了 Custom Resource Definitions 并且想要生成 像[这样][ar]的 API 参考文档,那么这款工具就是为你准备的。 ## 替代方案 本项目启发了以下项目的创建: - [**Kubernetes reference-docs generator**](https://github.com/kubernetes-sigs/reference-docs): 用于[官方 Kubernetes 组件参考文档](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/) - 由 Elastic 提供的 [**crd-ref-docs**](https://github.com/elastic/crd-ref-docs):本项目的一个全新实现。 - 如果你是一个开源项目,可以考虑通过 https://doc.crds.dev/ 毫不费力地公开你的 CRD API 参考。 ## 当前用户 - [**Knative** API 参考文档](https://knative.dev/docs/reference/api/serving-api/) - [**FluxCD** API 参考文档](https://fluxcd.io/docs/components/source/api/) - [**Argo CD** operator API 参考文档](https://argocd-operator.readthedocs.io/en/latest/reference/api.html/) - [**Contour** ingress controller API 参考文档](https://projectcontour.io/docs/v1.19.0/config/api/) - [**Kubeflow** API 参考文档](https://www.kubeflow.org/docs/reference/overview/) - [**cert-manager** API 参考文档](https://cert-manager.io/docs/reference/api-docs/) - [**Open Service Mesh** API 参考文档](https://release-v0-11.docs.openservicemesh.io/docs/api_reference/config/v1alpha1/) - [**PlanetScale Vitess Operator** API 参考文档](https://github.com/planetscale/vitess-operator/blob/main/docs/api.md) - [**Agones** API 参考文档](https://agones.dev/site/docs/reference/agones_crd_api_reference/) - [**Gardener** API 参考文档](https://gardener.cloud/api-reference/) - [**New Relic Alert Manager** API 参考文档](https://github.com/fpetkovski/newrelic-alert-manager/tree/master/docs) - [**Antrea** API 参考文档](https://antrea.io/docs/v1.3.0/docs/api-reference/) - [**kube-green** API 参考文档](https://kube-green.dev/docs/apireference_v1alpha1/) - [**Azure Service Operator** 支持的资源](https://azure.github.io/azure-service-operator/reference/) - [**NGINX Gateway Fabric** API 参考文档](https://docs.nginx.com/nginx-gateway-fabric/reference/api/) - _[[在此添加你的项目]]_ 还有一些 **fork**: - [**elastic/crd-ref-docs**](https://github.com/elastic/crd-ref-docs):受本项目启发的全新重新实现,支持 AsciiDoc。被 Elastic Cloud on Kubernetes API 参考文档使用。 ## 为什么 通常你会想使用与 [Kubernetes API 参考][ar]相同的[文档生成器][dg],但以下是我编写了一个不同的解析器/生成器的原因: 1. 目前,Kubernetes API [并未][pr]为 CRD(例如 Knative)提供 OpenAPI 规范,因此 Kubernetes 使用的 [gen-apidocs][ga] 生成器将无法工作。 2. 即使 Kubernetes API 开始为 CRD 提供 OpenAPI 规范,你的 CRD 也必须具有验证 schema(例如 Knative API 就没有!) 3. Kubernetes [gen-apidocs][ga] 解析器依赖于运行 `kube-apiserver` 并调用 `/apis` endpoint 来获取 OpenAPI 规范以生成文档。**这款工具不需要这些!** ## 如何实现 这是一个自定义的 API 参考文档生成器,它使用 [k8s.io/gengo](https://godoc.org/k8s.io/gengo) 项目来解析类型并从中生成 API 文档。 此工具的功能包括: - 不依赖 OpenAPI 规范、kube-apiserver 或运行中的 cluster。 - 仅依赖 Go 源代码 (pkg/apis/**/*.go) 来解析 API 类型。 - 可以链接到外部 API 的其他站点。例如,如果你的类型引用了 Kubernetes core/v1.PodSpec,你可以链接到它。 - 支持[可配置](./example-config.json)设置,以从生成的输出中完全隐藏某些字段或类型。 - 可以输出到文件或启动实时 http-server(用于快速迭代)。 - 支持从 godoc 类型、包和字段注释渲染 markdown。 ## 试用 1. Clone 此 repository。 2. 确保你安装了 go1.11+。然后运行 `go build`,你应该会在当前目录中得到一个 `gen-crd-api-reference-docs` 二进制可执行文件。 3. Clone 一个 Knative repository,正确设置 GOPATH,并在该目录中调用编译后的二进制文件。 # 进入设置了 GOPATH 的 repository 根目录。(我使用我自己的脚本 # goclone(1) 为我 clone 的每个 repo 设置单独的 GOPATH。) $ goclone knative/build $ /path/to/gen-crd-api-reference-docs \ -config "/path/to/example-config.json" \ -api-dir "github.com/knative/build/pkg/apis/build/v1alpha1" \ -out-file docs.html 4. 访问 `docs.html` 查看结果。 这不是一个官方的 Google 项目。请参阅 [LICENSE](./LICENSE)。
标签:EVTX分析, SOC Prime, 子域名突变, 开发工具, 文档生成器, 日志审计