编写新主题
本页介绍如何为 Kubernetes 文档创建新主题。
开始之前
按照 打开拉取请求 中所述,创建 Kubernetes 文档仓库的分支。
选择页面类型
在准备编写新主题时,请考虑最适合你内容的页面类型
类型 | 描述 |
---|---|
概念 | 概念页面解释 Kubernetes 的某些方面。 例如,概念页面可能会描述 Kubernetes Deployment 对象,并解释它在部署、扩展和更新时作为应用程序所扮演的角色。 通常,概念页面不包括步骤序列,而是提供指向任务或教程的链接。 有关概念主题的示例,请参阅 节点。 |
任务 | 任务页面显示如何做一件事情。 其目的是给读者一个步骤序列,让他们在阅读页面时可以实际执行这些步骤。 任务页面可以是短的或长的,只要它专注于一个领域。 在任务页面中,可以将简短的解释与要执行的步骤混合,但是如果你需要提供冗长的解释,则应在概念主题中进行。 相关的任务和概念主题应该相互链接。 有关简短任务页面的示例,请参阅 配置 Pod 以使用卷进行存储。 有关较长任务页面的示例,请参阅 配置存活和就绪探针 |
教程 | 教程页面显示如何实现将多个 Kubernetes 功能联系在一起的目标。 教程可能会提供几个步骤序列,读者在阅读页面时可以实际执行这些步骤。 或者,它可能会提供相关代码段的解释。 例如,教程可以提供代码示例的演练。 教程可以包括对正在联系在一起的 Kubernetes 功能的简要说明,但应链接到相关概念主题以深入解释各个功能。 |
创建新页面
为你编写的每个新页面使用内容类型。 文档站点提供模板或 Hugo 原型 以创建新的内容页面。 要创建新的页面类型,请使用要创建的文件的路径运行 hugo new
。 例如
hugo new docs/concepts/my-first-concept.md
选择标题和文件名
选择一个包含你希望搜索引擎找到的关键字的标题。 创建一个文件名,该文件名使用标题中的单词,并用连字符分隔。 例如,标题为 使用 HTTP 代理访问 Kubernetes API 的主题的文件名为 http-proxy-access-api.md
。 你不需要在文件名中包含“kubernetes”,因为“kubernetes”已经在主题的 URL 中,例如
/docs/tasks/extend-kubernetes/http-proxy-access-api/
将主题标题添加到 front matter
在你的主题中,在 front matter 中添加一个 title
字段。 front matter 是页面顶部三条虚线之间的 YAML 块。 这是一个例子
---
title: Using an HTTP Proxy to Access the Kubernetes API
---
选择目录
根据你的页面类型,将你的新文件放在以下其中一个的子目录中
- /content/en/docs/tasks/
- /content/en/docs/tutorials/
- /content/en/docs/concepts/
你可以将文件放在现有的子目录中,也可以创建新的子目录。
将你的主题放在目录中
目录是使用文档源的目录结构动态构建的。 /content/en/docs/
下的顶级目录创建顶级导航,而子目录在目录中都有条目。
每个子目录都有一个文件 _index.md
,它表示给定子目录内容的“主页”。 _index.md
不需要模板。 它可以包含有关子目录中主题的概述内容。
默认情况下,目录中的其他文件按字母顺序排序。 这几乎从来都不是最好的顺序。 要控制子目录中主题的相对排序,请将 weight:
front-matter 键设置为整数。 通常,我们使用 10 的倍数,以便考虑以后添加主题。 例如,权重为 10
的主题将排在权重为 20
的主题之前。
在主题中嵌入代码
如果你想在主题中包含一些代码,你可以使用 markdown 代码块语法直接将代码嵌入到文件中。 建议在以下情况下使用(并非详尽列表)
- 代码显示诸如
kubectl get deploy mydeployment -o json | jq '.status'
之类的命令的输出。 - 代码对于用户来说不够通用,无法尝试。 例如,你可以嵌入用于创建 Pod 的 YAML 文件,该文件依赖于特定的 FlexVolume 实现。
- 该代码是一个不完整的示例,因为其目的是突出显示较大文件的一部分。 例如,在描述自定义 RoleBinding 的方法时,你可以直接在主题文件中提供一个简短的代码片段。
- 由于其他原因,该代码不适合用户尝试。 例如,在描述如何使用
kubectl edit
命令向资源添加新属性时,你可以提供一个仅包含要添加的属性的简短示例。
包含来自另一个文件的代码
在主题中包含代码的另一种方法是创建一个新的、完整的示例文件(或一组示例文件),然后从主题中引用该示例。 当示例是通用的且可重用,并且你希望读者自己尝试时,请使用此方法来包含示例 YAML 文件。
添加新的独立示例文件(例如 YAML 文件)时,将代码放在 <LANG>/examples/
子目录之一中,其中 <LANG>
是主题的语言。 在你的主题文件中,使用 code_sample
shortcode
{{% code_sample file="<RELPATH>/my-example-yaml>" %}}
其中 <RELPATH>
是要包含的文件路径,相对于 examples
目录。 以下 Hugo shortcode 引用位于 /content/en/examples/pods/storage/gce-volume.yaml
的 YAML 文件。
{{% code_sample file="pods/storage/gce-volume.yaml" %}}
展示如何从配置文件创建 API 对象
如果你需要演示如何基于配置文件创建 API 对象,请将配置文件放在 <LANG>/examples
下的子目录之一中。
在你的主题中,显示此命令
kubectl create -f https://k8s.io/examples/pods/storage/gce-volume.yaml
注意
当向<LANG>/examples
目录添加新的 YAML 文件时,请确保该文件也包含在 <LANG>/examples_test.go
文件中。当 PR 提交时,网站的 Travis CI 会自动运行此测试用例,以确保所有示例都通过测试。有关使用此技术的示例主题,请参阅运行单实例有状态应用程序。
向主题添加图片
将图片文件放入 /images
目录。首选图片格式为 SVG。