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
Deploying the Controller
To deploy the controller to your Kubernetes cluster, you can use the following command:
make deploy IMG=apache/apisix-ingress-controller:dev
To undeploy the controller from the cluster:
make undeploy
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