Developer Guide
This document walks through how you can set up your development environment to contribute to APISIX Ingress controller.
#
PrerequisitesBefore you get started make sure you have:
- Installed Go 1.23 or later
- A Kubernetes cluster available. We recommend using kind.
- Installed APISIX in Kubernetes using Helm.
- Installed ADC v0.20.0+
#
Fork and clone- Fork the repository apache/apisix-ingress-controller to your GitHub account
- Clone the fork to your workstation.
- Run
go mod download
to download the required modules.
tip
If you are in China, you can speed up the downloads by setting GOPROXY
to https://goproxy.cn
.
#
Install CRD and Gateway APITo install the CRD and Gateway API, run the following commands:
make install
#
Build from sourceTo build APISIX Ingress controller, run the command below on the root of the project:
make build
Now you can run it by:
# for ARM64 architecture, use the following command:
# ./bin/apisix-ingress-controller_arm64 version
./bin/apisix-ingress-controller_amd64 version
#
Building ImageTo build a Docker image for APISIX Ingress controller, you can use the following command:
make build-image IMG=apache/apisix-ingress-controller:dev
#
Running tests#
Unit TestsTo run unit tests:
make unit-test
#
e2e TestsTo run end-to-end tests, you need to install kind.
Launch a kind cluster with the following command:
make kind-up
To run end-to-end e2e-tests against any changes, you need to load the built Docker images into the Kubernetes cluster:
# build docker image for APISIX Ingress controller
make build-image
# load the image into kind cluster
make kind-load-images
Currently, we use Kind version 0.26.0
and Kubernetes version 1.26+
for running the tests.
make e2e-test