Today, Kubernetes API does not provide OpenAPI specs for CRDs (e.g.
Knative), therefore the gen-apidocs
generator used by Kubernetes won't work.
Even when Kubernetes API starts providing OpenAPI specs for CRDs, your CRD
must have a validation schema (e.g. Knative API doesn't!)
Kubernetes gen-apidocs 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 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 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
Clone this repository.
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.
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
Visit docs.html to view the results.
This is not an official Google project. See LICENSE.