Developing Gateway API¶
You must have a working Go environment and then clone the repo:
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
This project works with Go modules; you can chose to setup your environment outside $GOPATH as well.
Building, testing and deploying¶
You will need to have Docker installed to perform the steps below.
We are using the Github issues and project dashboard to manage the list of TODOs for this project:
good first issue and
help wanted are especially good for a
We use milestones to track our progress towards releases. Looking at our current milestone can help identify our highest priority issues.
Building the code¶
The project uses
make to drive the build.
make will run code generators, and run static analysis against the code and
generate Kubernetes CRDs.
You can kick off an overall build from the top-level makefile:
Adding Experimental Fields¶
Starting with v0.5.0, all additions to the API must start in the experimental
release channel. Experimental fields must be marked with the
<gateway:experimental> annotation in Go type definitions. Gateway API CRD
generation will only include these fields in the experimental set of CRDs.
If experimental fields are removed or renamed, the original field name should be removed from the go struct, with a tombstone comment (example) ensuring the field name will not be reused.
To install gateway-api CRDs into a Kubernetes cluster:
To uninstall CRDs and associated resources:
Submitting a Pull Request¶
Gateway API follows a similar pull request process as Kubernetes. Merging a pull request requires the following steps to be completed before the pull request will be merged automatically.
- Sign the CLA (prerequisite)
- Open a pull request
- Pass verification tests
- Get all necessary approvals from reviewers and code owners
Make sure you run the static analysis over the repo before submitting your changes. The Prow presubmit will not let your change merge if verification fails.
The site documentation is written in Markdown and compiled with mkdocs. Each PR will automatically include a Netlify deploy preview. When new code merges, it will automatically be deployed with Netlify to gateway-api.sigs.k8s.io. If you want to manually preview docs changes locally, you can install mkdocs and run:
To make it easier to use the right version of mkdocs, there is a
target to create a Python virtualenv that includes mkdocs. To use the
mkdocs live preview server while you edit, you can run mkdocs from
$ 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... ...