--- title: 为 Kubernetes API 生成参考文档 content_template: templates/task --- {{% capture overview %}} 本页面展示了如何为 Kubernetes API 更新自动生成的参考文档。 Kubernetes API 参考文档是从 [Kubernetes OpenAPI 规范](https://github.com/kubernetes/kubernetes/blob/master/api/openapi-spec/swagger.json)构建的,而工具是从 [kubernetes-incubator/reference-docs](https://github.com/kubernetes-incubator/reference-docs) 构建的。 如果您在生成的文档中发现错误,则需要[将其上游修复](/docs/contribute/generate-ref-docs/contribute-upstream/)。 如果您只需要从 [OpenAPI](https://github.com/OAI/OpenAPI-Specification) 规范中重新生成参考文档,请继续阅读此页面。 {{% /capture %}} {{% capture prerequisites %}} 你需要安装以下软件: * [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * 1.9.1 或更高版本的 [Golang](https://golang.org/doc/install) 你需要知道如何在一个 GitHub 项目仓库中创建一个 PR。一般来说,这涉及到创建仓库的 fork 分支。想了解更多信息,请参见[创建一个文档 PR](/docs/contribute/start/) 和 [GitHub 标准 Fork & PR 工作流](https://gist.github.com/Chaser324/ce0505fbed06b947d962)。 {{% /capture %}} {{% capture steps %}} ## 设置本地仓库 创建本地工作区并设置您的 `GOPATH`。 ```shell mkdir -p $HOME/ export GOPATH=$HOME/ ``` 获取以下仓库的本地克隆: ```shell go get -u github.com/kubernetes-incubator/reference-docs go get -u github.com/go-openapi/loads go get -u github.com/go-openapi/spec ``` 如果您还没有下载过 `kubernetes/website` 仓库,现在下载: ```shell git clone https://github.com//website $GOPATH/src/github.com//website ``` 克隆下载 kubernetes/kubernetes 仓库,并作为 k8s.io/kubernetes: ```shell git clone https://github.com/kubernetes/kubernetes $GOPATH/src/k8s.io/kubernetes ``` * [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes) 仓库克隆后的基本目录为 `$GOPATH/src/k8s.io/kubernetes`。 其余后续步骤将您的基本目录称为 ``。 * [kubernetes/website](https://github.com/kubernetes/website) 仓库克隆后的基本目录为 `$GOPATH/src/github.com//website`。 其余后续步骤将您的基本目录称为 ``。 * [kubernetes-incubator/reference-docs](https://github.com/kubernetes-incubator/reference-docs) 仓库克隆后的基本目录为 `$GOPATH/src/github.com/kubernetes-incubator/reference-docs`。 其余后续步骤将您的基本目录称为 ``。 ## 生成 API 参考文档 本节说明如何生成[已发布的 Kubernetes API 参考文档](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)。 ### 修改 Makefile 文件 进入 `` 目录,然后编辑 `Makefile` 文件: * 设置 `K8SROOT` 为 ``. * 设置 `WEBROOT` 为 ``. * 设置 `MINOR_VERSION` 为要构建的文档的次要版本。例如,如果您想为 Kubernetes 1.15 构建文档,请将 `MINOR_VERSION` 设置为 15。保存并关闭 `Makefile` 文件。 例如,更新以下变量: ``` WEBROOT=$(GOPATH)/src/github.com//website K8SROOT=$(GOPATH)/src/k8s.io/kubernetes MINOR_VERSION=15 ``` ### 复制 OpenAPI 规范 在 `` 目录中运行以下命令: ```shell make updateapispec ``` 输出显示文件已被复制: ```shell cp ~/src/k8s.io/kubernetes/api/openapi-spec/swagger.json gen-apidocs/generators/openapi-spec/swagger.json ``` ### 构建 API 参考文档 在 `` 目录中运行以下命令: ```shell make api ``` 验证是否已生成这两个文件: ```shell [ -e "/gen-apidocs/generators/build/index.html" ] && echo "index.html built" || echo "no index.html" [ -e "/gen-apidocs/generators/build/navData.js" ] && echo "navData.js built" || echo "no navData.js" ``` ### 创建发布文档的目录 在 `` 目录中为生成的 API 参考文件创建目录: ```shell mkdir -p /static/docs/reference/generated/kubernetes-api/v1. mkdir -p /static/docs/reference/generated/kubernetes-api/v1./css mkdir -p /static/docs/reference/generated/kubernetes-api/v1./fonts ``` ## 将生成的文档复制到 kubernetes/website 仓库 在 `` 目录中运行以下命令,将生成的文件复制到本地 kubernetes/website 仓库。 ```shell make copyapi ``` 进入 kubernetes/website 仓库的本地主目录,并查看已修改的文件: ```shell cd git status ``` 输出显示修改后的文件: ``` static/docs/reference/generated/kubernetes-api/v1.15/css/bootstrap.min.css static/docs/reference/generated/kubernetes-api/v1.15/css/font-awesome.min.css static/docs/reference/generated/kubernetes-api/v1.15/css/stylesheet.css static/docs/reference/generated/kubernetes-api/v1.15/fonts/FontAwesome.otf static/docs/reference/generated/kubernetes-api/v1.15/fonts/fontawesome-webfont.eot static/docs/reference/generated/kubernetes-api/v1.15/fonts/fontawesome-webfont.svg static/docs/reference/generated/kubernetes-api/v1.15/fonts/fontawesome-webfont.ttf static/docs/reference/generated/kubernetes-api/v1.15/fonts/fontawesome-webfont.woff static/docs/reference/generated/kubernetes-api/v1.15/fonts/fontawesome-webfont.woff2 static/docs/reference/generated/kubernetes-api/v1.15/index.html static/docs/reference/generated/kubernetes-api/v1.15/jquery.scrollTo.min.js static/docs/reference/generated/kubernetes-api/v1.15/navData.js static/docs/reference/generated/kubernetes-api/v1.15/scroll.js ``` ## 更新 API 参考索引页面 * 打开 `/content/en/docs/reference/kubernetes-api/index.md` 文件进行编辑,并且更新 API 参考版本号。例如: ``` --- title: v1.15 --- [Kubernetes API v1.15](/docs/reference/generated/kubernetes-api/v1.15/) ``` * 打开 `/content/en/docs/reference/_index.md` 文件进行编辑,并添加新链接以获取最新的 API 参考。移除最旧的 API 参考版本。应该有五个指向最新 API 参考的链接。 ## 在本地测试 API 参考 发布 API 参考的本地版本。 验证 [本地预览](http://localhost:1313/docs/reference/generated/kubernetes-api/v1.15/)。 ```shell cd make docker-serve ``` ## 提交更改 在 `` 中运行 `git add` 和 `git commit` 来提交更改。 将您的更改[创建 PR](/docs/contribute/start/) 提交到 [kubernetes/website](https://github.com/kubernetes/website) 仓库。监视您提交的 PR,并根据需要回复 reviewer 的评论。继续监视您的 PR,直到合并为止。 {{% /capture %}} {{% capture whatsnext %}} * [为 Kubernetes 组件和工具生成参考文档](/docs/home/contribute/generated-reference/kubernetes-components/) * [为 kubectl 命令集生成参考文档](/docs/home/contribute/generated-reference/kubectl/) * [为 Kubernetes 联邦 API 生成参考文档](/docs/home/contribute/generated-reference/federation-api/) {{% /capture %}}