ahmetb / gen-crd-api-reference-docs

API Reference Docs generator for Kubernetes CRDs (used by Knative, Kubeflow and others)
Apache License 2.0
307 stars 99 forks source link
crd crds kubebuilder kubernetes-api operator-sdk

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 this tool is for you.

Alternatives

This project has inspired creation of the following projects:

Nowadays, I don't have a lot of time to maintain this tool. So consider using one of the above in case this repo does not work for you.

If you're an open source project, consider exposing your CRD API Reference via https://doc.crds.dev/ without much effort.

Current Users

Also some forks:

Why

Normally you would want to use the same docs generator as Kubernetes API reference, but here's why I wrote a different parser/generator:

  1. Today, Kubernetes API does not provide OpenAPI specs for CRDs (e.g. Knative), therefore the gen-apidocs 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 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:

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.