Skip to main content
Version: 1.6.0

Configuring Ingress with Kubernetes Ingress resource

This tutorial will walk you through on how you can configure APISIX Ingress with the default Kubernetes Ingress resource.


Before you move on, make sure you:

  1. Have access to a Kubernetes cluster. This tutorial uses minikube.
  2. Install APISIX Ingress. See the Installation section.

Deploy httpbin#

We will deploy a sample service, kennethreitz/httpbin, for this tutorial.

You can deploy it to your Kubernetes cluster by running:

kubectl run httpbin --image kennethreitz/httpbin --port 80
kubectl expose pod httpbin --port 80

Configuring Ingress#

We can use the default Kubernetes Ingress resource to configure APISIX Ingress. The example below shows a sample configuration that creates a Route to the httpbin service:

# use v1beta1 if your Kubernetes cluster version is older than v1.19.0
kind: Ingress
name: httpserver-ingress
# we use APISIX Ingress and it watches Ingress resources with "apisix" ingressClassName
ingressClassName: apisix
- host:
- backend:
name: httpbin
number: 80
path: /
pathType: Prefix

This configuration will route all requests with host to the httpbin service.

You can apply it by running:

kubectl apply -f httpbin-ingress.yaml

Test the created Routes#

If you followed along and used minikube and NodePort service to expose APISIX, you can access it through the Node IP of the service apisix-gateway. If the Node IP is not reachable directly (if you are on Darwin, Windows, or WSL), you can create a tunnel to access the service on your machine:

minikube service apisix-gateway --url -n ingress-apisix

Now, you can send a GET request to the created Route and it will be Routed to the httpbin service:

curl --location --request GET "localhost:57687/get?foo1=bar1&foo2=bar2" -H "Host:"

You will receive a response similar to:

"args": {
"foo1": "bar1",
"foo2": "bar2"
"headers": {
"Accept": "*/*",
"Host": "",
"User-Agent": "curl/7.84.0",
"X-Forwarded-Host": ""
"origin": "",
"url": ""