ahmetb/gen-crd-api-reference-docs

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

Stars: 332 | Forks: 102

# Kubernetes Custom Resource API Reference Docs generator If you have a project that is providing Custom Resource Definitions and wanted to generate API Reference Docs [like this][ar] this tool is for you. ## Alternatives This project has inspired creation of the following projects: - [**Kubernetes reference-docs generator**](https://github.com/kubernetes-sigs/reference-docs): used in [official Kubernetes component reference docs](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/) - [**crd-ref-docs** by Elastic](https://github.com/elastic/crd-ref-docs): A fresh implementation of this project. - If you're an open source project, consider exposing your CRD API Reference via https://doc.crds.dev/ without much effort. ## Current Users - [**Knative** API reference docs](https://knative.dev/docs/reference/api/serving-api/) - [**FluxCD** API reference docs](https://fluxcd.io/docs/components/source/api/) - [**Argo CD** operator API reference docs](https://argocd-operator.readthedocs.io/en/latest/reference/api.html/) - [**Contour** ingress controller API reference docs](https://projectcontour.io/docs/v1.19.0/config/api/) - [**Kubeflow** API reference docs](https://www.kubeflow.org/docs/reference/overview/) - [**cert-manager** API reference docs](https://cert-manager.io/docs/reference/api-docs/) - [**Open Service Mesh** API reference docs](https://release-v0-11.docs.openservicemesh.io/docs/api_reference/config/v1alpha1/) - [**PlanetScale Vitess Operator** API reference docs](https://github.com/planetscale/vitess-operator/blob/main/docs/api.md) - [**Agones** API reference docs](https://agones.dev/site/docs/reference/agones_crd_api_reference/) - [**Gardener** API reference docs](https://gardener.cloud/api-reference/) - [**New Relic Alert Manager** API reference docs](https://github.com/fpetkovski/newrelic-alert-manager/tree/master/docs) - [**Antrea** API reference docs](https://antrea.io/docs/v1.3.0/docs/api-reference/) - [**kube-green** API reference docs](https://kube-green.dev/docs/apireference_v1alpha1/) - [**Azure Service Operator** supported resources](https://azure.github.io/azure-service-operator/reference/) - [**NGINX Gateway Fabric** API reference docs](https://docs.nginx.com/nginx-gateway-fabric/reference/api/) - _[[ADD YOUR PROJECT HERE]]_ Also some **forks**: - [**elastic/crd-ref-docs**](https://github.com/elastic/crd-ref-docs): A fresh re-implementation inspired by this project that supports AsciiDoc. Used by Elastic Cloud on Kubernetes API reference docs. ## Why Normally you would want to use the same [docs generator][dg] as [Kubernetes API reference][ar], but here's why I wrote a different parser/generator: 1. Today, Kubernetes API [does not][pr] provide OpenAPI specs for CRDs (e.g. Knative), therefore the [gen-apidocs][ga] generator used by Kubernetes won't work. 2. Even when Kubernetes API starts providing OpenAPI specs for CRDs, your CRD must have a validation schema (e.g. Knative API doesn't!) 3. Kubernetes [gen-apidocs][ga] parser relies on running a `kube-apiserver` and calling `/apis` endpoint to get OpenAPI specs to generate docs. **This tool doesn't need that!** ## How This is a custom API reference docs generator that uses the [k8s.io/gengo](https://godoc.org/k8s.io/gengo) project to parse types and generate API documentation from it. Capabilities of this tool include: - Doesn't depend on OpenAPI specs, or kube-apiserver, or a running cluster. - Relies only on the Go source code (pkg/apis/**/*.go) to parse API types. - Can link to other sites for external APIs. For example, if your types have a reference to Kubernetes core/v1.PodSpec, you can link to it. - [Configurable](./example-config.json) settings to hide certain fields or types entirely from the generated output. - Either output to a file or start a live http-server (for rapid iteration). - Supports markdown rendering from godoc type, package and field comments. ## Try it out 1. Clone this repository. 2. Make sure you have go1.11+ installed. Then run `go build`, you should get a `gen-crd-api-reference-docs` binary executable in the current directory. 3. Clone a Knative repository, set GOPATH correctly, and call the compiled binary within that directory. # go into a repository root with GOPATH set. (I use my own script # goclone(1) to have a separate GOPATH for each repo I clone.) $ 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. Visit `docs.html` to view the results. This is not an official Google project. See [LICENSE](./LICENSE).
标签:EVTX分析