Developer Guide
This document walks through how you can set up your development environment to contribute to APISIX Ingress controller.
Prerequisites#
Before 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 downloadto 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 API#
To install the CRD and Gateway API, run the following commands:
make install
Build from source#
To 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 Image#
To 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 Tests#
To run unit tests:
make unit-test
e2e Tests#
To 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