Skip to main content
Version: Next

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:

  1. Installed Go 1.23 or later
  2. A Kubernetes cluster available. We recommend using kind.
  3. Installed APISIX in Kubernetes using Helm.
  4. Installed ADC v0.20.0+

Fork and clone#

  1. Fork the repository apache/apisix-ingress-controller to your GitHub account
  2. Clone the fork to your workstation.
  3. 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 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