跳至内容

开发者指南

项目管理

我们使用 GitHub 问题和项目仪表板来管理此项目的 TODO 列表

标记为good first issuehelp wanted的问题特别适合首次贡献。

我们使用里程碑来跟踪我们发布的进度。这些里程碑通常根据它们代表的semver发布版本标签进行标记,这意味着我们通常只关注序列中的下一个发布版本,直到它关闭并完成发布。只有网关 API 维护者才能创建里程碑并将问题附加到里程碑。

我们使用优先级标签来帮助指示解决问题的时间重要性,或者问题是否需要其创建者或社区的更多支持才能被优先考虑。这些标签可以使用/priority command in PR and issue comments进行设置。例如,/priority important-soon

先决条件

在开始使用网关 API 开发之前,我们建议您安装以下先决条件

请注意,Kind 和我们的许多构建任务也依赖于 Docker 或 Podman。

构建、测试和部署

克隆存储库

mkdir -p $GOPATH/src/sigs.k8s.io
cd $GOPATH/src/sigs.k8s.io
git clone https://github.com/kubernetes-sigs/gateway-api
cd gateway-api

此项目使用 Go 模块;您也可以选择在 $GOPATH 之外设置您的环境。

构建代码

该项目使用make来驱动构建。make将运行代码生成器,并对代码运行静态分析,并生成 Kubernetes CRD。您可以从顶层 makefile 启动整体构建

make generate

添加实验性字段

对 API 的所有添加都必须从实验性发布渠道开始。实验性字段必须在 Go 类型定义中用<gateway:experimental>注释标记。网关 API CRD 生成只会将这些字段包含在实验性 CRD 集中。

如果实验性字段被移除或重命名,则应从 go 结构体中移除原始字段名,并使用墓碑注释(example)确保不会重复使用字段名。

提交拉取请求

网关 API 遵循与Kubernetes类似的拉取请求流程。合并拉取请求需要完成以下步骤,然后拉取请求才会自动合并。

验证

在提交更改之前,请确保您对存储库运行了静态分析。如果验证失败,Prow presubmit将不会让您的更改合并。

make verify

文档

网站文档使用 Markdown 编写,并使用mkdocs进行编译。每个 PR 将自动包含一个Netlify部署预览。当新代码合并时,它将自动使用 Netlify 部署到gateway-api.sigs.k8s.io。如果您想在本地手动预览文档更改,则可以安装 mkdocs 并运行

 make docs

为了方便使用正确的 mkdocs 版本,有一个.venv目标来创建一个包含 mkdocs 的 Python 虚拟环境。要使用 mkdocs 实时预览服务器,您可以在编辑时从虚拟环境运行 mkdocs

$ make .venv
Creating a virtualenv in .venv... OK
To enter the virtualenv type "source .venv/bin/activate", to exit type "deactivate"
(.venv) $ source .venv/bin/activate
(.venv) $ mkdocs serve
INFO    -  Building documentation...
...

有关如何编写文档的更多信息,请参阅我们的文档风格指南.

一致性测试

要开发或运行一致性测试,请参阅一致性测试文档.