title: Developer Guide keywords:

  • APISIX ingress
  • Apache APISIX
  • Kubernetes ingress
  • Development
  • Contribute description: Setting up development environment for APISIX Ingress controller.

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